Questions tagged [e]

e is a hardware verification language (HVL) which is tailored to implementing highly flexible and reusable verification testbenches.

e is a hardware verification language (HVL) which is tailored to implementing highly flexible and reusable verification test-benches.

http://en.wikipedia.org/wiki/E_(verification_language)

The e language uses an Aspect-Oriented Programming (AOP) approach, which is an extension of the object-oriented programming approach to specifically address the needs required in functional verification.

AOP is a key feature in that it allows for users to easily bolt on additional functionality to existing code in a non-invasive manner. This permits easy reuse and code maintenance which is a huge benefit in the hardware world, where designs are continually being tweaked to meet market demands throughout the project life-cycle.

AOP also addresses cross cutting concerns (features that cut across various sections of the code) easily by allowing users to extend either specific or all instances of a particular struct to add functionality. Users can extend several structs to add functionality related to a particular feature and bundle the extensions into a single file if desired, providing for more organized file partitioning.

114 questions
2
votes
1 answer

Specman macros: How to use optional tags?

I have a macro for defining ports: -- Create simple port define "p_def " as { : inout simple_port of is instance; keep bind(,empty); }; I would like to extend…
Halona
  • 1,475
  • 1
  • 15
  • 26
2
votes
1 answer

Dependency Injection before generation

This is a follow up question from my previous question (Difference between "new" and "gen"). Is there a way to pass dependencies into a struct before generation occurs? I'm interested in trying to write my code in a way which is easily tested.…
qzcx
  • 361
  • 1
  • 12
1
vote
1 answer

field started with % in struct in Specman

I am new to Specman, just don't know what the "%" prefix of a field in struct mean? for example, the codes below. struct packet_s like any_sequence_item { %addr : uint(bits: 2); %data : list of byte; ... }; What's the difference if we…
Chad Tsai
  • 11
  • 1
1
vote
2 answers

What is the difference between deep_copy and gen keeping in Specman?

can someone tell me what is the difference between coping one transaction(item) to the another like in examples bellow (add_method_port_1 and add_method_port_2): add_method_port_1 (added_item: item_s) is { var new_item: new_item_s; gen…
1
vote
2 answers

Specman : how to constraint a list to be all iterations of a variable but not only?

I've defined the following struct : struct my_struct { var_a : bit; var_b : bit; }; In another struct, I've instantiated a list of this struct : struct another_struct { my_list : list of my_struct; list_size : uint; keep…
1
vote
3 answers

Specman e: Is there a way to know how many values there is in an enumerated type?

I need to know how many values there is in an enumerated type in my verification environment. E.g.: type my_type: [a, b, c, d]; I there a way to check on the fly that there 4 different values in the my_type? Thank you for your help
Halona
  • 1,475
  • 1
  • 15
  • 26
1
vote
1 answer

Specman e: How driver's items queue can be locked from a sequence?

In my verification environment, there are few sequences running simultaneously on the same driver (there is no matter when an item gets the bus in relation to other sequences' items). BUT, now I need to add additional sequence, that will run…
Halona
  • 1,475
  • 1
  • 15
  • 26
1
vote
1 answer

Specman e: "keep type .. is a" fails to refine the type of a field

I have the next code in my verification environment: // seq_file.e extend SPECIFIC_TYPE sequence { keep type driver is a SPECIFIC_TYPE sequence_driver; event some_event is @driver.as_a(SPECIFIC_TYPE sequence_driver).some_event; }; extend…
Halona
  • 1,475
  • 1
  • 15
  • 26
1
vote
3 answers

Specman soft select on variable, decimal vs. hexadecimal values

Here are two similar constraint blocks, one written using decimal notation, and the other using hexadecimal notation. The first works as expected, but the second only generates positive values (including 0) out of the 5 available values: -- positive…
evilpascal
  • 117
  • 3
  • 12
1
vote
2 answers

Specman e: Is there a way to print unit instance name?

I've built a generic agent that will be instantiated several times in the environment: unit agent_u { monitor : monitor_u is instance; }; The monitor prints some messages, e.g.: unit monitor_u { run() is also { message(LOW, "Hello…
Halona
  • 1,475
  • 1
  • 15
  • 26
1
vote
2 answers

Specman/e list of lists (multidimensional array)

How can I create a fixed multidimensional array in Specman/e using varibles? And then access individual elements or whole rows? For example in SystemVerilog I would have: module top; function automatic my_func(); bit [7:0] arr [4][8]; //…
evilpascal
  • 117
  • 3
  • 12
1
vote
2 answers

Does Specman e have struct constructor?

I have a struct with a list: struct my_struct { my_list : list of uint; // other fields }; I would like to build something similar to cpp class constructor: when I allocate my_struct using new operator, my_list will be initiated to have one…
Halona
  • 1,475
  • 1
  • 15
  • 26
1
vote
1 answer

Specman e: How the predefined sequence.item should be used?

I have a sequence: sequence bus_sequence using item=bus_item, created_driver=bus_sequence_driver; When I try to drive an item using the next code: extend bus_sequence { body() @driver.clock is only { do item; …
Halona
  • 1,475
  • 1
  • 15
  • 26
1
vote
2 answers

Specman e: define-as-computed macro error

I have multiple identical constrains on lists of uint in my verification environment. I wrote a macro so I would able to write only once the constrains and it will extend them to all other lists. For example, I would like to write: data_delay …
Halona
  • 1,475
  • 1
  • 15
  • 26
1
vote
1 answer

Specman e: A sequence drives its BFM also its MAIN was not defined in a test

I'm building UART verification environment. I have 2 sequenceses: For driving DUT UART configuration - vr_ad_sequence For driving frames to DUT UART Rx - uart_sequence Both sequences, their drivers and BFMs work Ok. BUT, when I created a simple…
Halona
  • 1,475
  • 1
  • 15
  • 26