From b049ead042f7453b806cf86c1103d3ec6bb8b616 Mon Sep 17 00:00:00 2001 From: Andrew Zonenberg Date: Mon, 7 Aug 2017 20:29:05 -0700 Subject: [PATCH] Added level-triggered reset support to GP_COUNTx simulation models --- techlibs/greenpak4/cells_sim_digital.v | 70 +++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/techlibs/greenpak4/cells_sim_digital.v b/techlibs/greenpak4/cells_sim_digital.v index 91d744039..eb18a20b6 100644 --- a/techlibs/greenpak4/cells_sim_digital.v +++ b/techlibs/greenpak4/cells_sim_digital.v @@ -86,6 +86,14 @@ module GP_COUNT14(input CLK, input wire RST, output reg OUT); end "LEVEL": begin + always @(posedge CLK or RST) begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + + if(RST) + count <= 0; + end end default: begin @@ -178,7 +186,7 @@ module GP_COUNT14_ADV(input CLK, input RST, output reg OUT, count <= COUNT_TO; //Resets - if(RST) begin + if(!RST) begin if(RESET_VALUE == "ZERO") count <= 0; else @@ -196,6 +204,31 @@ module GP_COUNT14_ADV(input CLK, input RST, output reg OUT, end "LEVEL": begin + always @(posedge CLK or RST) begin + + //Main counter + if(KEEP) begin + end + else if(UP) + count <= count + 1'd1; + else + count <= count - 1'd1; + + //Wrapping + if(count == 0 && !UP) + count <= COUNT_TO; + if(count == 14'h3fff && UP) + count <= COUNT_TO; + + //Resets + if(RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + end end default: begin @@ -288,7 +321,7 @@ module GP_COUNT8_ADV(input CLK, input RST, output reg OUT, count <= COUNT_TO; //Resets - if(RST) begin + if(!RST) begin if(RESET_VALUE == "ZERO") count <= 0; else @@ -306,6 +339,31 @@ module GP_COUNT8_ADV(input CLK, input RST, output reg OUT, end "LEVEL": begin + always @(posedge CLK or RST) begin + + //Main counter + if(KEEP) begin + end + else if(UP) + count <= count + 1'd1; + else + count <= count - 1'd1; + + //Wrapping + if(count == 0 && !UP) + count <= COUNT_TO; + if(count == 8'hff && UP) + count <= COUNT_TO; + + //Resets + if(RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + end end default: begin @@ -381,6 +439,14 @@ module GP_COUNT8( end "LEVEL": begin + always @(posedge CLK or RST) begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + + if(RST) + count <= 0; + end end default: begin -- 2.30.2