rtl passing all tests

This commit is contained in:
felsabbagh3
2019-03-22 02:44:53 -04:00
parent 656475b3b3
commit 01d142c6e6
17 changed files with 398 additions and 319 deletions

View File

@@ -93,28 +93,28 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__1(VVortex__Syms* __restrict vlSymsp)
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__1\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__stall_reg =
((~ (IData)(vlTOPp->reset)) & (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall));
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__old = ((IData)(vlTOPp->reset)
? 0U
: vlTOPp->Vortex__DOT__vx_fetch__DOT__temp_PC);
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__BR_reg = ((IData)(vlTOPp->reset)
? 0U
:
((IData)(4U)
+ vlTOPp->Vortex__DOT__memory_branch_dest));
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__delay_reg = 0U;
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__real_PC = ((IData)(vlTOPp->reset)
? 0U
:
((IData)(4U)
+ vlTOPp->Vortex__DOT__vx_fetch__DOT__PC_to_use));
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__state = ((IData)(vlTOPp->reset)
? 0U
:
@@ -127,13 +127,13 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__1(VVortex__Syms* __restrict vlSymsp)
((IData)(vlTOPp->Vortex__DOT__memory_branch_dir)
? 2U
: 0U))));
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__JAL_reg = ((IData)(vlTOPp->reset)
? 0U
:
((IData)(4U)
+ vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest));
// ALWAYS at VX_fetch.v:128
// ALWAYS at VX_fetch.v:129
vlTOPp->Vortex__DOT__vx_fetch__DOT__prev_debug = 0U;
// ALWAYS at VX_fetch.v:71
vlTOPp->Vortex__DOT__vx_fetch__DOT__PC_to_use =
@@ -230,7 +230,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
__Vdlyvdim0__Vortex__DOT__vx_csr_handler__DOT__csr__v0
= vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__csr_address;
}
// ALWAYS at VX_register_file.v:30
// ALWAYS at VX_register_file.v:35
if (((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))
& (0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)))) {
__Vdlyvval__Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers__v0
@@ -250,6 +250,11 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
vlTOPp->Vortex__DOT__vx_csr_handler__DOT__csr[__Vdlyvdim0__Vortex__DOT__vx_csr_handler__DOT__csr__v0]
= __Vdlyvval__Vortex__DOT__vx_csr_handler__DOT__csr__v0;
}
// ALWAYSPOST at VX_register_file.v:38
if (__Vdlyvset__Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers__v0) {
vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers[__Vdlyvdim0__Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers__v0]
= __Vdlyvval__Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers__v0;
}
// ALWAYS at VX_d_e_reg.v:130
vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__branch_type
= ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling)
@@ -401,12 +406,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
? vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__mem_result
: vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__alu_result))
: 0xdeadbeefU)))
:
vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers
[
(0x1fU
& (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0x14U))]));
: vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register));
vlTOPp->Vortex__DOT__csr_decode_csr_data = ((0xc00U
== (IData)(vlTOPp->Vortex__DOT__vx_csr_handler__DOT__decode_csr_address))
? (IData)(vlTOPp->Vortex__DOT__vx_csr_handler__DOT__cycle)
@@ -429,11 +429,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
:
vlTOPp->Vortex__DOT__vx_csr_handler__DOT__csr
[vlTOPp->Vortex__DOT__vx_csr_handler__DOT__decode_csr_address]))));
// ALWAYSPOST at VX_register_file.v:32
if (__Vdlyvset__Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers__v0) {
vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers[__Vdlyvdim0__Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers__v0]
= __Vdlyvval__Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers__v0;
}
// ALWAYS at VX_e_m_reg.v:117
vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid;
vlTOPp->Vortex__DOT__execute_branch_stall = ((0U
@@ -573,7 +568,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out;
// ALWAYS at VX_e_m_reg.v:117
vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb;
// ALWAYS at VX_execute.v:69
// ALWAYS at VX_execute.v:71
vlTOPp->Vortex__DOT__execute_alu_result = ((8U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
? (
@@ -625,19 +620,14 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
((1U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
?
((0x1fU
>= vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
?
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
>> vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
: 0U)
VL_SHIFTRS_III(32,32,5, vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1,
(0x1fU
& vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2))
:
((0x1fU
>= vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
?
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
>> vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
: 0U))
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
>>
(0x1fU
& vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)))
:
((1U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
@@ -660,12 +650,10 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
? 1U
: 0U)
:
((0x1fU
>= vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
?
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
<< vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
: 0U))
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
<<
(0x1fU
& vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)))
:
((1U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
@@ -676,7 +664,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
+ vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)))));
vlTOPp->out_cache_driver_in_address = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result;
// ALWAYS at VX_memory.v:60
// ALWAYS at VX_memory.v:66
vlTOPp->Vortex__DOT__memory_branch_dir = (1U &
((4U
& (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type))
@@ -765,8 +753,24 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp)
: 0U))));
}
void VVortex::_initial__TOP__3(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_initial__TOP__3\n"); );
VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__3\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
// ALWAYS at VX_register_file.v:42
vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register
= vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers
[(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0x14U))];
// ALWAYS at VX_register_file.v:42
vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register
= vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers
[(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU))];
}
void VVortex::_initial__TOP__4(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_initial__TOP__4\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
// INITIAL at VX_csr_handler.v:27
@@ -828,8 +832,8 @@ void VVortex::_initial__TOP__3(VVortex__Syms* __restrict vlSymsp) {
vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid = 0U;
}
void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_settle__TOP__4\n"); );
void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_settle__TOP__5\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
vlTOPp->Vortex__DOT__vx_decode__DOT__is_itype =
@@ -860,7 +864,7 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0x14U)
: 0x55U));
// ALWAYS at VX_decode.v:249
// ALWAYS at VX_decode.v:259
vlTOPp->Vortex__DOT__decode_branch_type = ((0x63U
==
(0x7fU
@@ -951,7 +955,7 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
+ (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset
<< 1U));
vlTOPp->out_cache_driver_in_address = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result;
// ALWAYS at VX_memory.v:60
// ALWAYS at VX_memory.v:66
vlTOPp->Vortex__DOT__memory_branch_dir = (1U &
((4U
& (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type))
@@ -1006,7 +1010,7 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd))
& (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb)));
// ALWAYS at VX_decode.v:238
// ALWAYS at VX_decode.v:248
vlTOPp->Vortex__DOT__decode_itype_immed = ((0x40U
& vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)
? (
@@ -1141,7 +1145,7 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
>> 0x14U)))
: 0xdeadbeefU)
: 0xdeadbeefU))))));
// ALWAYS at VX_fetch.v:94
// ALWAYS at VX_fetch.v:95
vlTOPp->Vortex__DOT__vx_fetch__DOT__temp_PC = (
((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal)
& (~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__delay_reg)))
@@ -1151,7 +1155,7 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
& (~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__delay_reg)))
? vlTOPp->Vortex__DOT__memory_branch_dest
: vlTOPp->Vortex__DOT__vx_fetch__DOT__PC_to_use));
// ALWAYS at VX_execute.v:69
// ALWAYS at VX_execute.v:71
vlTOPp->Vortex__DOT__execute_alu_result = ((8U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
? (
@@ -1203,19 +1207,14 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
((1U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
?
((0x1fU
>= vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
?
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
>> vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
: 0U)
VL_SHIFTRS_III(32,32,5, vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1,
(0x1fU
& vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2))
:
((0x1fU
>= vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
?
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
>> vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
: 0U))
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
>>
(0x1fU
& vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)))
:
((1U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
@@ -1238,12 +1237,10 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
? 1U
: 0U)
:
((0x1fU
>= vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
?
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
<< vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)
: 0U))
(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd1
<<
(0x1fU
& vlTOPp->Vortex__DOT__vx_execute__DOT__ALU_in2)))
:
((1U
& (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))
@@ -1260,10 +1257,6 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
>> 0x14U)))) & (0U
!= (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd)));
vlTOPp->Vortex__DOT__forwarding_fwd_stall = (((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)
| (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))
& (2U
== (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb)));
vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd
= (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd))
@@ -1279,6 +1272,22 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
!= (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd)));
vlTOPp->Vortex__DOT__forwarding_fwd_stall = ((((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)
| (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))
& (2U
== (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb)))
| (((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd)
| (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd))
& (2U
== (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))));
vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd
= ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))
& (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)))) & (0U
!= (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd)));
vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling
= ((IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall)
| (IData)(vlTOPp->Vortex__DOT__execute_branch_stall));
@@ -1297,14 +1306,6 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
& vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction))))
| (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall))
| (IData)(vlTOPp->Vortex__DOT__execute_branch_stall));
vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd
= ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))
& (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)))) & (0U
!= (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd)));
vlTOPp->Vortex__DOT__decode_rd1 = ((0x6fU == (0x7fU
& vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction))
? vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC
@@ -1339,32 +1340,42 @@ void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) {
? vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__mem_result
: vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__alu_result))
: 0xdeadbeefU)))
: vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers
[(0x1fU
& (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU))]));
: vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register));
}
VL_INLINE_OPT void VVortex::_sequent__TOP__5(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__5\n"); );
VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__6\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
// ALWAYS at VX_f_d_reg.v:26
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid = (1U
& ((~
((IData)(vlTOPp->reset)
| (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall))));
if (vlTOPp->reset) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid = 0U;
} else {
if ((1U & (~ (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall)))) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid
= (1U & (~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)));
}
}
// ALWAYS at VX_f_d_reg.v:26
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC =
(((IData)(vlTOPp->reset) | (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall))
? 0U : vlTOPp->Vortex__DOT__vx_fetch__DOT__temp_PC);
if (vlTOPp->reset) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC = 0U;
} else {
if ((1U & (~ (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall)))) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC
= vlTOPp->Vortex__DOT__vx_fetch__DOT__temp_PC;
}
}
// ALWAYS at VX_f_d_reg.v:26
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
= (((IData)(vlTOPp->reset) | (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall))
? 0U : ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)
? 0U : vlTOPp->fe_instruction));
// ALWAYS at VX_fetch.v:94
if (vlTOPp->reset) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction = 0U;
} else {
if ((1U & (~ (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall)))) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
= ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)
? 0U : vlTOPp->fe_instruction);
}
}
// ALWAYS at VX_fetch.v:95
vlTOPp->Vortex__DOT__vx_fetch__DOT__temp_PC = (
((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal)
& (~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__delay_reg)))
@@ -1403,7 +1414,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__5(VVortex__Syms* __restrict vlSymsp)
(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0x14U)
: 0x55U));
// ALWAYS at VX_decode.v:249
// ALWAYS at VX_decode.v:259
vlTOPp->Vortex__DOT__decode_branch_type = ((0x63U
==
(0x7fU
@@ -1454,7 +1465,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__5(VVortex__Syms* __restrict vlSymsp)
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd))
& (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb)));
// ALWAYS at VX_decode.v:238
// ALWAYS at VX_decode.v:248
vlTOPp->Vortex__DOT__decode_itype_immed = ((0x40U
& vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)
? (
@@ -1596,10 +1607,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__5(VVortex__Syms* __restrict vlSymsp)
>> 0x14U)))) & (0U
!= (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd)));
vlTOPp->Vortex__DOT__forwarding_fwd_stall = (((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)
| (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))
& (2U
== (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb)));
vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd
= (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd))
@@ -1614,6 +1621,22 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__5(VVortex__Syms* __restrict vlSymsp)
!= (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd)));
vlTOPp->Vortex__DOT__forwarding_fwd_stall = ((((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)
| (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))
& (2U
== (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb)))
| (((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd)
| (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd))
& (2U
== (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))));
vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd
= ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))
& (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)))) & (0U
!= (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd)));
vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling
= ((IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall)
| (IData)(vlTOPp->Vortex__DOT__execute_branch_stall));
@@ -1632,18 +1655,10 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__5(VVortex__Syms* __restrict vlSymsp)
& vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction))))
| (IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall))
| (IData)(vlTOPp->Vortex__DOT__execute_branch_stall));
vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd
= ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))
& (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU)))) & (0U
!= (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd)))
& (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd)));
}
VL_INLINE_OPT void VVortex::_combo__TOP__6(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_combo__TOP__6\n"); );
VL_INLINE_OPT void VVortex::_combo__TOP__7(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_combo__TOP__7\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
vlTOPp->Vortex__DOT__decode_rd1 = ((0x6fU == (0x7fU
@@ -1680,10 +1695,7 @@ VL_INLINE_OPT void VVortex::_combo__TOP__6(VVortex__Syms* __restrict vlSymsp) {
? vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__mem_result
: vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__alu_result))
: 0xdeadbeefU)))
: vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file__DOT__registers
[(0x1fU
& (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
>> 0xfU))]));
: vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register));
}
void VVortex::_eval(VVortex__Syms* __restrict vlSymsp) {
@@ -1697,11 +1709,14 @@ void VVortex::_eval(VVortex__Syms* __restrict vlSymsp) {
if (((IData)(vlTOPp->clk) & (~ (IData)(vlTOPp->__Vclklast__TOP__clk)))) {
vlTOPp->_sequent__TOP__2(vlSymsp);
}
if (((~ (IData)(vlTOPp->clk)) & (IData)(vlTOPp->__Vclklast__TOP__clk))) {
vlTOPp->_sequent__TOP__3(vlSymsp);
}
if ((((IData)(vlTOPp->clk) & (~ (IData)(vlTOPp->__Vclklast__TOP__clk)))
| ((IData)(vlTOPp->reset) & (~ (IData)(vlTOPp->__Vclklast__TOP__reset))))) {
vlTOPp->_sequent__TOP__5(vlSymsp);
vlTOPp->_sequent__TOP__6(vlSymsp);
}
vlTOPp->_combo__TOP__6(vlSymsp);
vlTOPp->_combo__TOP__7(vlSymsp);
// Final
vlTOPp->__Vclklast__TOP__clk = vlTOPp->clk;
vlTOPp->__Vclklast__TOP__reset = vlTOPp->reset;
@@ -1713,7 +1728,7 @@ void VVortex::_eval_initial(VVortex__Syms* __restrict vlSymsp) {
// Body
vlTOPp->__Vclklast__TOP__clk = vlTOPp->clk;
vlTOPp->__Vclklast__TOP__reset = vlTOPp->reset;
vlTOPp->_initial__TOP__3(vlSymsp);
vlTOPp->_initial__TOP__4(vlSymsp);
}
void VVortex::final() {
@@ -1727,7 +1742,7 @@ void VVortex::_eval_settle(VVortex__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_eval_settle\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
vlTOPp->_settle__TOP__4(vlSymsp);
vlTOPp->_settle__TOP__5(vlSymsp);
}
VL_INLINE_OPT QData VVortex::_change_request(VVortex__Syms* __restrict vlSymsp) {
@@ -1786,6 +1801,8 @@ void VVortex::_ctor_var_reset() {
Vortex__DOT__vx_f_d_reg__DOT__instruction = VL_RAND_RESET_I(32);
Vortex__DOT__vx_f_d_reg__DOT__curr_PC = VL_RAND_RESET_I(32);
Vortex__DOT__vx_f_d_reg__DOT__valid = VL_RAND_RESET_I(1);
Vortex__DOT__vx_decode__DOT__rd1_register = VL_RAND_RESET_I(32);
Vortex__DOT__vx_decode__DOT__rd2_register = VL_RAND_RESET_I(32);
Vortex__DOT__vx_decode__DOT__is_itype = VL_RAND_RESET_I(1);
Vortex__DOT__vx_decode__DOT__is_csr = VL_RAND_RESET_I(1);
Vortex__DOT__vx_decode__DOT__alu_tempp = VL_RAND_RESET_I(12);