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
3
votes
4 answers

Behavior of contradicting soft constraints

I have a testcase in which the behavior seems wrong. I see that in all generations the num_of_red_shoes is high, while I would expect a more even distribution. What is the cause of this behavior and how can it be fixed? <' struct closet { …
SpecUser
  • 31
  • 1
3
votes
2 answers

Specman e: How to use deep_copy on list of structs?

I have a my_list_1 (list of structs) that defined this way: struct my_struct { something[2] : list of int; something_else[2] : list of uint; }; ... my_list_1[10] : list of my_struct; I need to copy this list to a local variable in a…
Halona
  • 1,475
  • 1
  • 15
  • 26
3
votes
2 answers

Specman e: How to constrain 'all_different' to list of structs?

I have my_list that defined this way: struct my_struct { comparator[2] : list of int(bits:16); something_else[2] : list of uint(bits:16); }; ... my_list[10] : list of my_struct; It is forbidden to comparators at the same index (0 or 1) to…
Halona
  • 1,475
  • 1
  • 15
  • 26
3
votes
1 answer

Specman UVM: What is the difference between access a register directly and using read_reg_val()?

I'm working with vr_ad package for e. I've defined a register my_reg in the vr_ad_reg_file my_reg_file: reg_def MY_REG MY_REG_FILE 20'h00018 { reg_fld my_reg_field : uint (bits : 32) : RW : 0x0; }; I would like to access the value of the…
Halona
  • 1,475
  • 1
  • 15
  • 26
3
votes
2 answers

Specman e: Is there a way to extend multiple kinds of a struct?

in my verification environment we work with vr_ad UVM package, where there is a general struct for a register vr_ad_reg which has been extended with different type for every register in the environment, etc: reg_def TIMER_LOAD_0 TIMER 20'h00010 { …
Halona
  • 1,475
  • 1
  • 15
  • 26
3
votes
2 answers

comparing strings by lexicographical order in e/specman

Does specman have something like lex_lt(s1,s2) methods? (i.e. compare strings by lexicographical order). If not, is there a recommended way to achieve the same?
2
votes
2 answers

Is there "parallel all of" in Specman?

Let’s assume I have this unit unit agent { init_all_regs() @clock is {…}; }; I have a list of agents, the number of agents vary. I want to call the method init_all_regs() all of the agents, so that all of them run in parallel. Is there some…
2
votes
1 answer

Difference between declaring an event that is sensitive to a simple_port value and event_port

I want to know if there is any difference between the two: 1) simple_port data_valid : simple_port of bit is instance; keep data_valid.hdl_path() == "data_valid_o"; event data_valid_f is fall(data_valid$) @sim; on data_valid_f { -- do some…
renvill
  • 143
  • 1
  • 10
2
votes
1 answer

Specman UVM Scoreboard basic questions

I've built the next (working correctly) Scoreboard/Monitor environment: // Scoreboard : like uvm_scoreboard scbd_port packet_add : add packet_s; scbd_port packet_match : match packet_s; My ADD flow: // Monitor: expected_packet_o : out…
Halona
  • 1,475
  • 1
  • 15
  • 26
2
votes
1 answer

Specman on-the-fly generation for multiple constrained items

I have this multiple fields that need to be constrained in this manner: struct my_struct { a : uint; b : uint; c : uint; d : uint; keep 3*a + 4*b + 5*c + 6*d == 206 and a + b + c + d == 50; my_method() @clk_event is { …
renvill
  • 143
  • 1
  • 10
2
votes
1 answer

Specman coverage: How to cover only that some transition occurred?

I need to make sure that at least 1 change occurred in a specific uint item X, i.e. X had 2 different values (it is unknown what specific values). Something like this: cover some_event { item X : uint = some_uint using no_collect; transition…
Halona
  • 1,475
  • 1
  • 15
  • 26
2
votes
1 answer

specman e free tool for learning purpose

I am learning specman e for design verification, I have read some tutorials and learned some code, but i could not find a free tool to try some codes that I learn. so, my question is there any free tool like DVT eclipse that I can use it to learn…
t.tah
  • 53
  • 4
2
votes
1 answer

Specman: Why test has not finished after the MAIN sequence is finished?

a test I've wrote does not finishes after the MAIN sequence is finished. I did not raise TEST_DONE objection.. and the objections I did raised were all dropped. Actually the test finished long after all sequence's flow is done, on TEST BENCH…
Halona
  • 1,475
  • 1
  • 15
  • 26
2
votes
1 answer

Specman: What is the difference between "define" and "#define"?

What is the difference between define with and without hash mark? Thank you for your help
Halona
  • 1,475
  • 1
  • 15
  • 26
2
votes
1 answer

'type' constraint between two different determinant fields

I've read up on the topic of 'type' constraints in e. I saw that it's possible to constrain the types of struct fields, like in this example: extend DATA packet { keep type header is a COP header; }; This means that whenever I'm dealing with a…
Tudor Timi
  • 7,453
  • 1
  • 24
  • 53
1
2 3 4 5 6 7 8