projects
/
yosys.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #1862 from boqwxp/cleanup_techmap
[yosys.git]
/
techlibs
/
greenpak4
/
cells_sim_digital.v
diff --git
a/techlibs/greenpak4/cells_sim_digital.v
b/techlibs/greenpak4/cells_sim_digital.v
index fc481975c0faddd884c4975b5f4b632f70b6ea02..43d35d08f33c4c3c66ee49e585c756139de0bdf4 100644
(file)
--- a/
techlibs/greenpak4/cells_sim_digital.v
+++ b/
techlibs/greenpak4/cells_sim_digital.v
@@
-57,48
+57,52
@@
module GP_COUNT14(input CLK, input wire RST, output reg OUT);
case(RESET_MODE)
"RISING": begin
case(RESET_MODE)
"RISING": begin
- always @(posedge CLK or posedge RST) begin
- count <= count - 1'd1;
- if(count == 0)
- count <= COUNT_TO;
-
+ always @(posedge CLK, posedge RST) begin
if(RST)
if(RST)
- count <= 0;
+ count <= 0;
+ else begin
+ count <= count - 1'd1;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
end
end
"FALLING": begin
end
end
"FALLING": begin
- always @(posedge CLK or negedge RST) begin
- count <= count - 1'd1;
- if(count == 0)
- count <= COUNT_TO;
-
+ always @(posedge CLK, negedge RST) begin
if(!RST)
if(!RST)
- count <= 0;
+ count <= 0;
+ else begin
+ count <= count - 1'd1;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
end
end
"BOTH": begin
initial begin
end
end
"BOTH": begin
initial begin
- $display("Both-edge reset mode for GP_COUNT
8
not implemented");
+ $display("Both-edge reset mode for GP_COUNT
14
not implemented");
$finish;
end
end
"LEVEL": begin
$finish;
end
end
"LEVEL": begin
- always @(posedge CLK or posedge RST) begin
- count <= count - 1'd1;
- if(count == 0)
- count <= COUNT_TO;
-
+ always @(posedge CLK, posedge RST) begin
if(RST)
if(RST)
- count <= 0;
+ count <= 0;
+
+ else begin
+ count <= count - 1'd1;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
end
end
default: begin
initial begin
end
end
default: begin
initial begin
- $display("Invalid RESET_MODE on GP_COUNT
8
");
+ $display("Invalid RESET_MODE on GP_COUNT
14
");
$finish;
end
end
$finish;
end
end
@@
-141,21
+145,7
@@
module GP_COUNT14_ADV(input CLK, input RST, output reg OUT,
case(RESET_MODE)
"RISING": begin
case(RESET_MODE)
"RISING": begin
- always @(posedge CLK or posedge 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;
+ always @(posedge CLK, posedge RST) begin
//Resets
if(RST) begin
//Resets
if(RST) begin
@@
-165,25
+155,25
@@
module GP_COUNT14_ADV(input CLK, input RST, output reg OUT,
count <= COUNT_TO;
end
count <= COUNT_TO;
end
- end
- end
-
- "FALLING": begin
- always @(posedge CLK or negedge RST) begin
-
- //Main counter
- if(KEEP) begin
+ else if(KEEP) begin
end
end
- else if(UP)
+ else if(UP)
begin
count <= count + 1'd1;
count <= count + 1'd1;
- else
+ if(count == 14'h3fff)
+ count <= COUNT_TO;
+ end
+ else begin
count <= count - 1'd1;
count <= count - 1'd1;
- //Wrapping
- if(count == 0 && !UP)
- count <= COUNT_TO;
- if(count == 14'h3fff && UP)
- count <= COUNT_TO;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
+
+ end
+ end
+
+ "FALLING": begin
+ always @(posedge CLK, negedge RST) begin
//Resets
if(!RST) begin
//Resets
if(!RST) begin
@@
-193,6
+183,20
@@
module GP_COUNT14_ADV(input CLK, input RST, output reg OUT,
count <= COUNT_TO;
end
count <= COUNT_TO;
end
+ else if(KEEP) begin
+ end
+ else if(UP) begin
+ count <= count + 1'd1;
+ if(count == 14'h3fff)
+ count <= COUNT_TO;
+ end
+ else begin
+ count <= count - 1'd1;
+
+ if(count == 0)
+ count <= COUNT_TO;
+ end
+
end
end
end
end
@@
-204,21
+208,7
@@
module GP_COUNT14_ADV(input CLK, input RST, output reg OUT,
end
"LEVEL": begin
end
"LEVEL": begin
- always @(posedge CLK or posedge 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;
+ always @(posedge CLK, posedge RST) begin
//Resets
if(RST) begin
//Resets
if(RST) begin
@@
-228,6
+218,24
@@
module GP_COUNT14_ADV(input CLK, input RST, output reg OUT,
count <= COUNT_TO;
end
count <= COUNT_TO;
end
+ else begin
+
+ if(KEEP) begin
+ end
+ else if(UP) begin
+ count <= count + 1'd1;
+ if(count == 14'h3fff)
+ count <= COUNT_TO;
+ end
+ else begin
+ count <= count - 1'd1;
+
+ if(count == 0)
+ count <= COUNT_TO;
+ end
+
+ end
+
end
end
end
end
@@
-276,21
+284,7
@@
module GP_COUNT8_ADV(input CLK, input RST, output reg OUT,
case(RESET_MODE)
"RISING": begin
case(RESET_MODE)
"RISING": begin
- always @(posedge CLK or posedge 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;
+ always @(posedge CLK, posedge RST) begin
//Resets
if(RST) begin
//Resets
if(RST) begin
@@
-300,25
+294,26
@@
module GP_COUNT8_ADV(input CLK, input RST, output reg OUT,
count <= COUNT_TO;
end
count <= COUNT_TO;
end
- end
- end
-
- "FALLING": begin
- always @(posedge CLK or negedge RST) begin
-
//Main counter
//Main counter
- if(KEEP) begin
+
else
if(KEEP) begin
end
end
- else if(UP)
+ else if(UP)
begin
count <= count + 1'd1;
count <= count + 1'd1;
- else
+ if(count == 8'hff)
+ count <= COUNT_TO;
+ end
+ else begin
count <= count - 1'd1;
count <= count - 1'd1;
- //Wrapping
- if(count == 0 && !UP)
- count <= COUNT_TO;
- if(count == 8'hff && UP)
- count <= COUNT_TO;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
+
+ end
+ end
+
+ "FALLING": begin
+ always @(posedge CLK, negedge RST) begin
//Resets
if(!RST) begin
//Resets
if(!RST) begin
@@
-328,6
+323,21
@@
module GP_COUNT8_ADV(input CLK, input RST, output reg OUT,
count <= COUNT_TO;
end
count <= COUNT_TO;
end
+ //Main counter
+ else if(KEEP) begin
+ end
+ else if(UP) begin
+ count <= count + 1'd1;
+ if(count == 8'hff)
+ count <= COUNT_TO;
+ end
+ else begin
+ count <= count - 1'd1;
+
+ if(count == 0)
+ count <= COUNT_TO;
+ end
+
end
end
end
end
@@
-339,21
+349,7
@@
module GP_COUNT8_ADV(input CLK, input RST, output reg OUT,
end
"LEVEL": begin
end
"LEVEL": begin
- always @(posedge CLK or posedge 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;
+ always @(posedge CLK, posedge RST) begin
//Resets
if(RST) begin
//Resets
if(RST) begin
@@
-363,6
+359,23
@@
module GP_COUNT8_ADV(input CLK, input RST, output reg OUT,
count <= COUNT_TO;
end
count <= COUNT_TO;
end
+ else begin
+
+ if(KEEP) begin
+ end
+ else if(UP) begin
+ count <= count + 1'd1;
+ if(count == 8'hff)
+ count <= COUNT_TO;
+ end
+ else begin
+ count <= count - 1'd1;
+
+ if(count == 0)
+ count <= COUNT_TO;
+ end
+ end
+
end
end
end
end
@@
-401,7
+414,7
@@
module GP_COUNT8(
//Combinatorially output underflow flag whenever we wrap low
always @(*) begin
OUT <= (count == 8'h0);
//Combinatorially output underflow flag whenever we wrap low
always @(*) begin
OUT <= (count == 8'h0);
- OUT <= count;
+
P
OUT <= count;
end
//POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm.
end
//POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm.
@@
-410,24
+423,26
@@
module GP_COUNT8(
case(RESET_MODE)
"RISING": begin
case(RESET_MODE)
"RISING": begin
- always @(posedge CLK or posedge RST) begin
- count <= count - 1'd1;
- if(count == 0)
- count <= COUNT_TO;
-
+ always @(posedge CLK, posedge RST) begin
if(RST)
count <= 0;
if(RST)
count <= 0;
+ else begin
+ count <= count - 1'd1;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
end
end
"FALLING": begin
end
end
"FALLING": begin
- always @(posedge CLK or negedge RST) begin
- count <= count - 1'd1;
- if(count == 0)
- count <= COUNT_TO;
-
+ always @(posedge CLK, negedge RST) begin
if(!RST)
count <= 0;
if(!RST)
count <= 0;
+ else begin
+ count <= count - 1'd1;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
end
end
end
end
@@
-439,13
+454,15
@@
module GP_COUNT8(
end
"LEVEL": begin
end
"LEVEL": begin
- always @(posedge CLK or posedge RST) begin
- count <= count - 1'd1;
- if(count == 0)
- count <= COUNT_TO;
-
+ always @(posedge CLK, posedge RST) begin
if(RST)
count <= 0;
if(RST)
count <= 0;
+
+ else begin
+ count <= count - 1'd1;
+ if(count == 0)
+ count <= COUNT_TO;
+ end
end
end
end
end
@@
-725,20
+742,24
@@
module GP_PGEN(input wire nRST, input wire CLK, output reg OUT);
parameter PATTERN_DATA = 16'h0;
parameter PATTERN_LEN = 5'd16;
parameter PATTERN_DATA = 16'h0;
parameter PATTERN_LEN = 5'd16;
+ localparam COUNT_MAX = PATTERN_LEN - 1'h1;
+
reg[3:0] count = 0;
reg[3:0] count = 0;
- always @(posedge CLK) begin
+ always @(posedge CLK, negedge nRST) begin
+
if(!nRST)
if(!nRST)
-
OUT <= PATTERN_DATA[0]
;
+
count <= 0
;
else begin
else begin
- count <= count + 1;
- OUT <= PATTERN_DATA[count];
-
- if( (count + 1) == PATTERN_LEN)
- count <= 0;
+ count <= count - 1'h1;
+ if(count == 0)
+ count <= COUNT_MAX;
end
end
end
end
+ always @(*)
+ OUT = PATTERN_DATA[count];
+
endmodule
module GP_SHREG(input nRST, input CLK, input IN, output OUTA, output OUTB);
endmodule
module GP_SHREG(input nRST, input CLK, input IN, output OUTA, output OUTB);