From 40efffc70b0463d4ea56347406a7111ec5eab477 Mon Sep 17 00:00:00 2001 From: slmnemo Date: Wed, 17 Nov 2021 13:23:12 -0800 Subject: [PATCH 1/4] Removed .*s from muldiv.sv --- wally-pipelined/src/muldiv/muldiv.sv | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wally-pipelined/src/muldiv/muldiv.sv b/wally-pipelined/src/muldiv/muldiv.sv index a98fb4f02..d163474bf 100644 --- a/wally-pipelined/src/muldiv/muldiv.sv +++ b/wally-pipelined/src/muldiv/muldiv.sv @@ -51,7 +51,11 @@ module muldiv ( logic W64M; // Multiplier - mul mul(.*); + mul mul( + .clk, .reset, + .StallM, .FlushM, + .SrcAE, .SrcBE, + .Funct3E, .ProdM); // Divide // Start a divide when a new division instruction is received and the divider isn't already busy or finishing From bf8cef78bc8000e3b0a0e6f05ec0fe5d8a1976c3 Mon Sep 17 00:00:00 2001 From: slmnemo Date: Wed, 17 Nov 2021 13:37:50 -0800 Subject: [PATCH 2/4] removed .* from muldiv.sv (REAL) --- wally-pipelined/src/muldiv/muldiv.sv | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/wally-pipelined/src/muldiv/muldiv.sv b/wally-pipelined/src/muldiv/muldiv.sv index 6cfd33ebb..55ebc2a31 100644 --- a/wally-pipelined/src/muldiv/muldiv.sv +++ b/wally-pipelined/src/muldiv/muldiv.sv @@ -53,10 +53,12 @@ module muldiv ( // Multiplier mul mul( - .clk, .reset, - .StallM, .FlushM, - .SrcAE, .SrcBE, - .Funct3E, .ProdM); + .clk, .reset, + .StallM, .FlushM, + .ForwardedSrcAE, .ForwardedSrcBE, + .Funct3E, + .ProdM + ); // Divide // Start a divide when a new division instruction is received and the divider isn't already busy or finishing From 5c28553ca1ce041609540ced4cea776d4b570ead Mon Sep 17 00:00:00 2001 From: slmnemo Date: Wed, 17 Nov 2021 14:08:08 -0800 Subject: [PATCH 3/4] Removed .* from hazard hzu(.*) in wallypipelinedhart.sv. --- wally-pipelined/src/muldiv/muldiv.sv | 3 ++- wally-pipelined/src/wally/wallypipelinedhart.sv | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/wally-pipelined/src/muldiv/muldiv.sv b/wally-pipelined/src/muldiv/muldiv.sv index 55ebc2a31..b3bf4e83e 100644 --- a/wally-pipelined/src/muldiv/muldiv.sv +++ b/wally-pipelined/src/muldiv/muldiv.sv @@ -55,7 +55,8 @@ module muldiv ( mul mul( .clk, .reset, .StallM, .FlushM, - .ForwardedSrcAE, .ForwardedSrcBE, + // .SrcAE, .SrcBE, + .ForwardedSrcAE, .ForwardedSrcBE, // *** these are the src outputs before the mux choosing between them and PCE to put in srcA/B .Funct3E, .ProdM ); diff --git a/wally-pipelined/src/wally/wallypipelinedhart.sv b/wally-pipelined/src/wally/wallypipelinedhart.sv index 523c0953d..70cee5a93 100644 --- a/wally-pipelined/src/wally/wallypipelinedhart.sv +++ b/wally-pipelined/src/wally/wallypipelinedhart.sv @@ -318,7 +318,17 @@ module wallypipelinedhart ( muldiv mdu(.*); // multiply and divide unit - hazard hzu(.*); // global stall and flush control + hazard hzu( + .BPPredWrongE, .CSRWritePendingDEM, .RetM, .TrapM, + .LoadStallD, .StoreStallD, .MulDivStallD, .CSRRdStallD, + .LSUStall, .ICacheStallF, + .FPUStallD, .FStallD, + .DivBusyE, .FDivBusyE, + .EcallFaultM, .BreakpointFaultM, + .InvalidateICacheM, + // Stall & flush outputs + .StallF, .StallD, .StallE, .StallM, .StallW, + .FlushF, .FlushD, .FlushE, .FlushM, .FlushW); // global stall and flush control // Priveleged block operates in M and W stages, handling CSRs and exceptions privileged priv(.*); From 0bf1836a3add724924c71695fad2751c4e7cf233 Mon Sep 17 00:00:00 2001 From: slmnemo Date: Wed, 17 Nov 2021 14:21:23 -0800 Subject: [PATCH 4/4] Removed .* from hazard hzu(.*). --- wally-pipelined/src/wally/wallypipelinedhart.sv | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/wally-pipelined/src/wally/wallypipelinedhart.sv b/wally-pipelined/src/wally/wallypipelinedhart.sv index 70cee5a93..15cc61ba5 100644 --- a/wally-pipelined/src/wally/wallypipelinedhart.sv +++ b/wally-pipelined/src/wally/wallypipelinedhart.sv @@ -316,7 +316,20 @@ module wallypipelinedhart ( .*); - muldiv mdu(.*); // multiply and divide unit + muldiv mdu( + .clk, .reset, + // Execute Stage interface + // .SrcAE, .SrcBE, + .ForwardedSrcAE, .ForwardedSrcBE, // *** these are the src outputs before the mux choosing between them and PCE to put in srcA/B + .Funct3E, .Funct3M, + .MulDivE, .W64E, + // Writeback stage + .MulDivResultW, + // Divide Done + .DivBusyE, + // hazards + .StallM, .StallW, .FlushM, .FlushW + ); // multiply and divide unit hazard hzu( .BPPredWrongE, .CSRWritePendingDEM, .RetM, .TrapM,