File tree Expand file tree Collapse file tree 1 file changed +16
-1
lines changed Expand file tree Collapse file tree 1 file changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -69,6 +69,8 @@ module hwpe_ctrl_slave
69
69
70
70
logic triggered_q;
71
71
72
+ logic done_q1, done_q2;
73
+
72
74
always_ff @ (posedge clk_i or negedge rst_ni)
73
75
begin
74
76
if (rst_ni == 1'b0 )
@@ -198,7 +200,7 @@ module hwpe_ctrl_slave
198
200
regfile_flags.is_testset = (cfg.req == 1'b1 && cfg.wen == 1'b1 && cfg.add[LOG_REGS + 2 - 1 : 2 ] == REGFILE_MANDATORY_ACQUIRE ) ? 1 : 0 ; // Operation is a test&set to register context_ts
199
201
regfile_flags.is_trigger = (cfg.req == 1'b1 && cfg.wen == 1'b0 && cfg.add[LOG_REGS + 2 - 1 : 2 ] == REGFILE_MANDATORY_TRIGGER && cfg.data == '0 ) ? 1 : 0 ; // Operation is a trigger
200
202
regfile_flags.is_commit = (cfg.req == 1'b1 && cfg.wen == 1'b0 && cfg.add[LOG_REGS + 2 - 1 : 2 ] == REGFILE_MANDATORY_TRIGGER ) ? 1 : 0 ; // Operation is a commit (or commit & trigger)
201
- regfile_flags.true_done = ctrl_i.done & flags_o.is_working; // This is necessary because sometimes done is asserted as soon as rst_ni becomes 1
203
+ regfile_flags.true_done = ( ctrl_i.done | done_q1) & ~ done_q2; // This is necessary because sometimes done is asserted as soon as rst_ni becomes 1
202
204
flags_o.enable = s_enable_after[3 ]; // Enable after three cycles from rst_ni
203
205
end
204
206
@@ -465,6 +467,19 @@ module hwpe_ctrl_slave
465
467
cfg_req_q <= cfg_req_d;
466
468
end
467
469
470
+ // FF to make flags_o.done a pulse, pulse should be two cycles long so no single event upset can completely destroy it
471
+ always_ff @ (posedge clk_i or negedge rst_ni)
472
+ begin
473
+ if (! rst_ni) begin
474
+ done_q1 <= 1'b1 ;
475
+ done_q2 <= 1'b1 ;
476
+ end
477
+ else begin
478
+ done_q1 <= ctrl_i.done;
479
+ done_q2 <= done_q1;
480
+ end
481
+ end
482
+
468
483
assign cfg_id_d = cfg.id;
469
484
assign cfg_req_d = cfg.req;
470
485
assign cfg.r_id = cfg_id_q;
You can’t perform that action at this time.
0 commit comments