File tree 6 files changed +44
-15
lines changed
6 files changed +44
-15
lines changed Original file line number Diff line number Diff line change @@ -120,16 +120,22 @@ def create_missing_domain(self, name):
120
120
# Many device families provide advanced primitives for tackling reset. If these exist,
121
121
# they should be used instead.
122
122
if name == "sync" and self .default_clk is not None :
123
- clk_i = self .request (self .default_clk ).i
123
+ m = Module ()
124
+
125
+ clk_io = self .request (self .default_clk , dir = "-" )
126
+ m .submodules .clk_buf = clk_buf = io .Buffer ("i" , clk_io )
127
+
124
128
if self .default_rst is not None :
125
- rst_i = self .request (self .default_rst ).i
129
+ rst_io = self .request (self .default_rst , dir = "-" )
130
+ m .submodules .rst_buf = rst_buf = io .Buffer ("i" , rst_io )
131
+ rst_i = rst_buf .i
126
132
else :
127
133
rst_i = Const (0 )
128
134
129
- m = Module ()
130
135
m .domains += ClockDomain ("sync" )
131
- m .d .comb += ClockSignal ("sync" ).eq (clk_i )
136
+ m .d .comb += ClockSignal ("sync" ).eq (clk_buf . i )
132
137
m .submodules .reset_sync = ResetSynchronizer (rst_i , domain = "sync" )
138
+
133
139
return m
134
140
135
141
def prepare (self , elaboratable , name = "top" , ** kwargs ):
Original file line number Diff line number Diff line change @@ -532,10 +532,14 @@ def create_missing_domain(self, name):
532
532
o_OSCOUT = clk_i )
533
533
534
534
else :
535
- clk_i = self .request (self .default_clk ).i
535
+ clk_io = self .request (self .default_clk , dir = "-" )
536
+ m .submodules .clk_buf = clk_buf = io .Buffer ("i" , clk_io )
537
+ clk_i = clk_buf .i
536
538
537
539
if self .default_rst is not None :
538
- rst_i = self .request (self .default_rst ).i
540
+ rst_io = self .request (self .default_rst , dir = "-" )
541
+ m .submodules .rst_buf = rst_buf = io .Buffer ("i" , rst_io )
542
+ rst_i = rst_buf .i
539
543
else :
540
544
rst_i = Const (0 )
541
545
Original file line number Diff line number Diff line change @@ -956,9 +956,14 @@ def create_missing_domain(self, name):
956
956
o_HFCLKOUT = clk_i ,
957
957
)
958
958
else :
959
- clk_i = self .request (self .default_clk ).i
959
+ clk_io = self .request (self .default_clk , dir = "-" )
960
+ m .submodules .clk_buf = clk_buf = io .Buffer ("i" , clk_io )
961
+ clk_i = clk_buf .i
962
+
960
963
if self .default_rst is not None :
961
- rst_i = self .request (self .default_rst ).i
964
+ rst_io = self .request (self .default_rst , dir = "-" )
965
+ m .submodules .rst_buf = rst_buf = io .Buffer ("i" , rst_io )
966
+ rst_i = rst_buf .i
962
967
else :
963
968
rst_i = Const (0 )
964
969
Original file line number Diff line number Diff line change 1
1
from abc import abstractmethod
2
2
3
3
from ..hdl import *
4
+ from ..lib import io
4
5
from ..lib .cdc import ResetSynchronizer
5
6
from ..build import *
6
7
@@ -172,10 +173,14 @@ def create_missing_domain(self, name):
172
173
o_A = sys_clk0 ,
173
174
o_Z = clk_i )
174
175
else :
175
- clk_i = self .request (self .default_clk ).i
176
+ clk_io = self .request (self .default_clk , dir = "-" )
177
+ m .submodules .clk_buf = clk_buf = io .Buffer ("i" , clk_io )
178
+ clk_i = clk_buf .i
176
179
177
180
if self .default_rst is not None :
178
- rst_i = self .request (self .default_rst ).i
181
+ rst_io = self .request (self .default_rst , dir = "-" )
182
+ m .submodules .rst_buf = rst_buf = io .Buffer ("i" , rst_io )
183
+ rst_i = rst_buf .i
179
184
else :
180
185
rst_i = Const (0 )
181
186
Original file line number Diff line number Diff line change @@ -393,11 +393,15 @@ def create_missing_domain(self, name):
393
393
delay = int (100e-6 * self .default_clk_frequency )
394
394
# User-defined clock signal.
395
395
else :
396
- clk_i = self .request (self .default_clk ).i
396
+ clk_io = self .request (self .default_clk , dir = "-" )
397
+ m .submodules .clk_buf = clk_buf = io .Buffer ("i" , clk_io )
398
+ clk_i = clk_buf .i
397
399
delay = int (15e-6 * self .default_clk_frequency )
398
400
399
401
if self .default_rst is not None :
400
- rst_i = self .request (self .default_rst ).i
402
+ rst_io = self .request (self .default_rst , dir = "-" )
403
+ m .submodules .rst_buf = rst_buf = io .Buffer ("i" , rst_io )
404
+ rst_i = rst_buf .i
401
405
else :
402
406
rst_i = Const (0 )
403
407
Original file line number Diff line number Diff line change @@ -1144,11 +1144,16 @@ def create_missing_domain(self, name):
1144
1144
return super ().create_missing_domain (name )
1145
1145
1146
1146
if name == "sync" and self .default_clk is not None :
1147
- clk_i = self .request (self .default_clk ).i
1147
+ m = Module ()
1148
+
1149
+ clk_io = self .request (self .default_clk , dir = "-" )
1150
+ m .submodules .clk_buf = clk_buf = io .Buffer ("i" , clk_io )
1151
+ clk_i = clk_buf .i
1148
1152
if self .default_rst is not None :
1149
- rst_i = self .request (self .default_rst ).i
1153
+ rst_io = self .request (self .default_rst , dir = "-" )
1154
+ m .submodules .rst_buf = rst_buf = io .Buffer ("i" , rst_io )
1155
+ rst_i = rst_buf .i
1150
1156
1151
- m = Module ()
1152
1157
ready = Signal ()
1153
1158
m .submodules += Instance (STARTUP_PRIMITIVE [self .family ], o_EOS = ready )
1154
1159
m .domains += ClockDomain ("sync" , reset_less = self .default_rst is None )
You can’t perform that action at this time.
0 commit comments