


Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Various aspects of ecode functionality, explaining the behavior of specific ecode structures through examples. Topics include understanding the functionality of extend transactions, deciphering the difference between two packet structures, and determining the output of given ecode fragments. Additionally, concepts such as testbenches, reducing verification time, deciding on verification levels, and the distinction between testing and verification are touched upon.
Typology: Exams
1 / 4
This page cannot be seen from the preview
Don't miss anything!



(a)
extend transaction { keep address in [10..50]; keep soft address == select { 20: min; 60: others; 30: max; }; };
(b)
extend instr { keep soft opcode == select { 40: [ADD, ADDI, SUB, SUBI]; 20: [AND, ANDI, XOR, XORI]; 10: [JMP, CALL, RET, NOP]; ‘top.carry' * 90: JMPC; }; };
struct packet {
kind: [tx, rx]; size: byte; keep size > 15 => kind == rx; };
struct packet {
size: byte; kind: [tx, rx]; keep size > 15 => kind == rx; };
Num1 = %{Num2,Num3};
Num4 = pack(packing.high,num2,num3);
event enter_exec_st is (change('top.cpu.curr_FSM') and true('top.cpu.curr_FSM' == exec_st))@sys.cpuclk; event fetch1_assert is (change('top.fetch1') and true('top.fetch1' == 1))@sys.cpuclk; expect @enter_exec_st => { @fetch1_assert}@sys.cpuclk else dut_error("PROTOCOL ERROR");