OpenCores
URL https://opencores.org/ocsvn/opencpu32/opencpu32/trunk

Subversion Repositories opencpu32

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /opencpu32
    from Rev 33 to Rev 34
    Reverse comparison

Rev 33 → Rev 34

/trunk/hdl/opencpu32/opencpu32.xise
325,7 → 325,7
<property xil_pn:name="Shift Register Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Show All Models" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Model Target" xil_pn:value="VHDL" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Run Time ISim" xil_pn:value="200 ns" xil_pn:valueState="non-default"/>
<property xil_pn:name="Simulation Run Time ISim" xil_pn:value="400 ns" xil_pn:valueState="non-default"/>
<property xil_pn:name="Simulation Run Time Map" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Run Time Par" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Run Time Translate" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
/trunk/hdl/opencpu32/ControlUnit.vhd
116,12 → 116,12
case opcodeIR is
when mov_reg | mov_val | add_reg | sub_reg | and_reg | or_reg | xor_reg | ld_reg | ld_val | stom_reg | stom_val =>
nextCpuState <= execute;
cyclesExecute := 3; -- Wait 3 cycles for mov operation
cyclesExecute := 1; -- Wait 1 cycles
currInstruction <= IR;
when jmp_val | jmpr_val =>
nextCpuState <= execute;
cyclesExecute := 1;
cyclesExecute := 0; -- No Wait cycle
-- Invalid instruction (Now will be ignored, but latter should raise a trap
when others =>
275,7 → 275,7
DpRegFileWriteEn <= '0';
outEnDp <= disable;
-- Come back to waiting state
nextExState <= waitToExecute;
nextExState <= waitToExecute;
when others =>
null;
/trunk/hdl/opencpu32/testControlUnit.vhd
128,9 → 128,28
wait for CLK_period; -- Fetch
wait for CLK_period; -- Decode
wait for CLK_period; -- Execute
-- Verify if signals for the datapath are valid
assert ImmDp = conv_std_logic_vector(10, nBits) report "Invalid value" severity FAILURE;
assert DpRegFileWriteAddr = r0 report "Invalid value" severity FAILURE;
assert DpAluOp = alu_pass report "Invalid value" severity FAILURE;
assert MuxDp = muxPos(fromImediate) report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ... 1
wait for CLK_period; -- Executing ... 2
-- State writing on the registers
assert DpRegFileWriteEn = '1' report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ...2 (Releasing lines.... (Next instruction should come...)
-- Verify if all lines are unasserted
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnB = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnA = '0' report "Invalid value" severity FAILURE;
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert outEnDp = disable report "Invalid value" severity FAILURE;
-------------------------------------------------------------------------------------------------
-- MOV r1,20d (Compare control unit outputs with Datapath)--------------------------------------
REPORT "MOV r1,20" SEVERITY NOTE;
MemoryDataInput <= mov_val & conv_std_logic_vector(reg2Num(r1),4) & conv_std_logic_vector(20, 22);
137,10 → 156,89
wait for CLK_period; -- Fetch
wait for CLK_period; -- Decode
wait for CLK_period; -- Execute
-- Verify if signals for the datapath are valid
assert ImmDp = conv_std_logic_vector(20, nBits) report "Invalid value" severity FAILURE;
assert DpRegFileWriteAddr = r1 report "Invalid value" severity FAILURE;
assert DpAluOp = alu_pass report "Invalid value" severity FAILURE;
assert MuxDp = muxPos(fromImediate) report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ... 1
wait for CLK_period; -- Executing ... 2
-- State writing on the registers
assert DpRegFileWriteEn = '1' report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ...2 (Releasing lines.... (Next instruction should come...)
-- Verify if all lines are unasserted
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnB = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnA = '0' report "Invalid value" severity FAILURE;
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert outEnDp = disable report "Invalid value" severity FAILURE;
-------------------------------------------------------------------------------------------------
-- MOV r2,r1 (Compare control unit outputs with Datapath)--------------------------------------
REPORT "MOV r2,r1" SEVERITY NOTE;
MemoryDataInput <= mov_reg & conv_std_logic_vector(reg2Num(r2),4) & conv_std_logic_vector(reg2Num(r1),4) & "000000000000000000";
wait for CLK_period; -- Fetch
wait for CLK_period; -- Decode
wait for CLK_period; -- Execute
-- Verify if signals for the datapath are valid
assert DpRegFileReadAddrB = r1 report "Invalid value" severity FAILURE;
assert DpRegFileWriteAddr = r2 report "Invalid value" severity FAILURE;
assert MuxDp = muxPos(fromRegFileB) report "Invalid value" severity FAILURE;
assert DpRegFileReadEnB = '1' report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ... 1
-- State writing on the registers
assert DpRegFileWriteEn = '1' report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ...2 (Releasing lines.... (Next instruction should come...)
-- Verify if all lines are unasserted
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnB = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnA = '0' report "Invalid value" severity FAILURE;
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert outEnDp = disable report "Invalid value" severity FAILURE;
-------------------------------------------------------------------------------------------------
-- ADD r2,r0 (Compare control unit outputs with Datapath)--------------------------------------
REPORT "ADD r2,r0" SEVERITY NOTE;
MemoryDataInput <= add_reg & conv_std_logic_vector(reg2Num(r2),4) & conv_std_logic_vector(reg2Num(r0),4) & "000000000000000000";
wait for CLK_period; -- Fetch
wait for CLK_period; -- Decode
wait for CLK_period; -- Execute
-- Verify if signals for the datapath are valid
assert DpRegFileReadAddrB = r0 report "Invalid value" severity FAILURE;
assert DpRegFileReadAddrA = r2 report "Invalid value" severity FAILURE;
assert DpRegFileWriteAddr = r2 report "Invalid value" severity FAILURE;
assert MuxDp = muxPos(fromAlu) report "Invalid value" severity FAILURE;
assert DpAluOp = alu_sum report "Invalid value" severity FAILURE;
assert DpRegFileReadEnB = '1' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnA = '1' report "Invalid value" severity FAILURE;
assert MuxRegDp = muxRegPos(fromRegFileA) report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ... 1
-- State writing on the registers
assert DpRegFileWriteEn = '1' report "Invalid value" severity FAILURE;
wait for CLK_period; -- Executing ...2 (Releasing lines.... (Next instruction should come...)
-- Verify if all lines are unasserted
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnB = '0' report "Invalid value" severity FAILURE;
assert DpRegFileReadEnA = '0' report "Invalid value" severity FAILURE;
assert DpRegFileWriteEn = '0' report "Invalid value" severity FAILURE;
assert outEnDp = disable report "Invalid value" severity FAILURE;
-------------------------------------------------------------------------------------------------
 
wait;
-- Finish simulation
assert false report "NONE. End of simulation." severity failure;
wait;
end process;
 
END;
/trunk/hdl/opencpu32/opencpu32.gise
222,7 → 222,7
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1334428831" xil_pn:in_ck="5551394544742288633" xil_pn:name="TRAN_copyAbstractToPostAbstractSimulation" xil_pn:start_ts="1334428831">
<transform xil_pn:end_ts="1334437962" xil_pn:in_ck="5551394544742288633" xil_pn:name="TRAN_copyAbstractToPostAbstractSimulation" xil_pn:start_ts="1334437962">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="Alu.vhd"/>
253,7 → 253,7
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1334428831" xil_pn:in_ck="5551394544742288633" xil_pn:name="TRAN_copyPostAbstractToPreSimulation" xil_pn:start_ts="1334428831">
<transform xil_pn:end_ts="1334437962" xil_pn:in_ck="5551394544742288633" xil_pn:name="TRAN_copyPostAbstractToPreSimulation" xil_pn:start_ts="1334437962">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="Alu.vhd"/>
272,7 → 272,7
<outfile xil_pn:name="testRegisterFile.vhd"/>
<outfile xil_pn:name="testTriStateBuffer.vhd"/>
</transform>
<transform xil_pn:end_ts="1334428834" xil_pn:in_ck="5551394544742288633" xil_pn:name="TRAN_ISimulateBehavioralModelRunFuse" xil_pn:prop_ck="-2461943258679370096" xil_pn:start_ts="1334428831">
<transform xil_pn:end_ts="1334437965" xil_pn:in_ck="5551394544742288633" xil_pn:name="TRAN_ISimulateBehavioralModelRunFuse" xil_pn:prop_ck="-2461943258679370096" xil_pn:start_ts="1334437962">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="fuse.log"/>
282,7 → 282,7
<outfile xil_pn:name="testControlUnit_isim_beh.exe"/>
<outfile xil_pn:name="xilinxsim.ini"/>
</transform>
<transform xil_pn:end_ts="1334428834" xil_pn:in_ck="4949781681609100681" xil_pn:name="TRAN_ISimulateBehavioralModel" xil_pn:prop_ck="7818598284332786958" xil_pn:start_ts="1334428834">
<transform xil_pn:end_ts="1334437965" xil_pn:in_ck="4949781681609100681" xil_pn:name="TRAN_ISimulateBehavioralModel" xil_pn:prop_ck="5692602031942061840" xil_pn:start_ts="1334437965">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="isim.cmd"/>

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.