diff --git a/tb/sequences/add_sequence.svh b/tb/sequences/add_sequence.svh index 8a22cf2f1..82f78b6ae 100644 --- a/tb/sequences/add_sequence.svh +++ b/tb/sequences/add_sequence.svh @@ -1,6 +1,6 @@ class add_sequence extends basic_sequence; - `uvm_object_utils(basic_sequence); + `uvm_object_utils(add_sequence); function new(string name = "add"); super.new(name); diff --git a/tb/sequences/addw_sequence.svh b/tb/sequences/addw_sequence.svh new file mode 100644 index 000000000..b5b8b715c --- /dev/null +++ b/tb/sequences/addw_sequence.svh @@ -0,0 +1,16 @@ +class addw_sequence extends basic_sequence; + + `uvm_object_utils(addw_sequence); + + function new(string name = "addw"); + super.new(name); + endfunction : new + + function alu_op get_operator(); + return ADDW; + endfunction : get_operator + + task body(); + super.body(); + endtask : body +endclass : addw_sequence diff --git a/tb/sequences/basic_sequence.svh b/tb/sequences/basic_sequence.svh index a703dfe9c..a21138304 100644 --- a/tb/sequences/basic_sequence.svh +++ b/tb/sequences/basic_sequence.svh @@ -12,11 +12,12 @@ virtual class basic_sequence extends fu_if_seq; fu_if_seq_item command; command = fu_if_seq_item::type_id::create("command"); + `uvm_info("ALU Sequence", $sformatf("Starting %s sequence", get_operator().name)) for(int i = 0; i <= 100; i++) begin start_item(command); if(~command.randomize()) - `uvm_warning("ALU Basic Sequence", "Randomization constraints can not be met.") + `uvm_warning("ALU Basic Sequence", "Randomization constraints can not be met.") command.operator = get_operator(); finish_item(command); diff --git a/tb/sequences/sub_sequence.svh b/tb/sequences/sub_sequence.svh new file mode 100644 index 000000000..ad9ded87c --- /dev/null +++ b/tb/sequences/sub_sequence.svh @@ -0,0 +1,16 @@ +class sub_sequence extends basic_sequence; + + `uvm_object_utils(sub_sequence); + + function new(string name = "sub"); + super.new(name); + endfunction : new + + function alu_op get_operator(); + return SUB; + endfunction : get_operator + + task body(); + super.body(); + endtask : body +endclass : sub_sequence diff --git a/tb/sequences/subw_sequence.svh b/tb/sequences/subw_sequence.svh new file mode 100644 index 000000000..e9231227b --- /dev/null +++ b/tb/sequences/subw_sequence.svh @@ -0,0 +1,16 @@ +class subw_sequence extends basic_sequence; + + `uvm_object_utils(subw_sequence); + + function new(string name = "addw"); + super.new(name); + endfunction : new + + function alu_op get_operator(); + return SUBW; + endfunction : get_operator + + task body(); + super.body(); + endtask : body +endclass : subw_sequence diff --git a/tb/test/alu_test.svh b/tb/test/alu_test.svh index caf184016..3bc4a0fd8 100644 --- a/tb/test/alu_test.svh +++ b/tb/test/alu_test.svh @@ -8,7 +8,10 @@ class alu_test extends alu_test_base; `uvm_component_utils(alu_test) fibonacci_sequence fibonacci; - add_sequence add_sequence; + add_sequence add_sequence; + addw_sequence addw_sequence; + subw_sequence subw_sequence; + sub_sequence sub_sequence; //------------------------------------------ // Methods @@ -27,8 +30,19 @@ class alu_test extends alu_test_base; phase.raise_objection(this, "alu_test"); //fibonacci_sequence fibonacci; super.run_phase(phase); - add_sequence = new("add"); - add_sequence.start(sequencer_h); + + add_sequence = new("add"); + add_sequence.start(sequencer_h); + + addw_sequence = new("addw"); + addw_sequence.start(sequencer_h); + + subw_sequence = new("subw"); + subw_sequence.start(sequencer_h); + + sub_sequence = new("sub"); + sub_sequence.start(sequencer_h); + fibonacci = new("fibonacci"); fibonacci.start(sequencer_h); // Testlogic goes here