@@ -16,154 +16,154 @@ import Foundation
1616import PythonKit
1717
1818class BoundaryScanRegisterCreator {
19- var name : String
20- private var inputName : String
21- private var outputName : String
22- var counter : Int = 0
23-
24- var clock : String
25- var reset : String
26- var resetActive : Simulator . Active
27- var testing : String
28- var shift : String
29-
30- private var clockIdentifier : PythonObject
31- private var resetIdentifier : PythonObject
32- private var testingIdentifier : PythonObject
33- private var shiftIdentifier : PythonObject
34-
35- private var Node : PythonObject
36-
37- init (
38- name: String ,
39- clock: String ,
40- reset: String ,
41- resetActive: Simulator . Active ,
42- testing: String ,
43- shift: String ,
44- using Node: PythonObject
45- ) {
46- self . name = name
47- inputName = " \( name) _input "
48- outputName = " \( name) _output "
49-
50- self . clock = clock
51- clockIdentifier = Node . Identifier ( clock)
52-
53- self . reset = reset
54- resetIdentifier = Node . Identifier ( reset)
55-
56- self . resetActive = resetActive
57-
58- self . testing = testing
59- testingIdentifier = Node . Identifier ( testing)
60-
61- self . shift = shift
62- shiftIdentifier = Node . Identifier ( shift)
63-
64- self . Node = Node
65- }
66-
67- func create(
68- group: String ,
69- din: PythonObject ,
70- dout: PythonObject ,
71- sin: String ,
72- sout: String ,
73- input: Bool
74- ) -> PythonObject {
75- let sinIdentifier = Node . Identifier ( sin)
76- let soutIdentifier = Node . Identifier ( sout)
77-
78- let name = input ? inputName : outputName
79-
80- let portArguments = [
81- Node . PortArg ( " din " , din) ,
82- Node . PortArg ( " dout " , dout) ,
83- Node . PortArg ( " sin " , sinIdentifier) ,
84- Node . PortArg ( " sout " , soutIdentifier) ,
85- Node . PortArg ( " clock " , clockIdentifier) ,
86- Node . PortArg ( " reset " , resetIdentifier) ,
87- Node . PortArg ( " testing " , testingIdentifier) ,
88- Node . PortArg ( " shift " , shiftIdentifier) ,
89- ]
90-
91- let instanceName = " __ \( name) _ \( group) _ \( counter) __ "
92-
93- let submoduleInstance = Node . Instance (
94- name,
95- instanceName,
96- Python . tuple ( portArguments) ,
97- Python . tuple ( )
98- )
99-
100- counter += 1
101-
102- return Node . InstanceList (
103- name,
104- Python . tuple ( ) ,
105- Python . tuple ( [ submoduleInstance] )
106- )
107- }
108-
109- var inputDefinition : String {
110- """
111- module \( inputName) (
112- din,
113- dout,
114- sin,
115- sout,
116- clock,
117- reset,
118- testing,
119- shift
120- );
121- input din; output dout;
122- input sin; output sout;
123- input clock, reset, testing, shift;
124-
125- reg store;
126- always @ (posedge clock or \( resetActive == . high ? " posedge " : " negedge " ) reset) begin
127- if ( \( resetActive == . high ? " " : " ~ " ) reset) begin
128- store <= 1'b0;
129- end else begin
130- store <= shift ? sin: dout;
131- end
19+ var name : String
20+ private var inputName : String
21+ private var outputName : String
22+ var counter : Int = 0
23+
24+ var clock : String
25+ var reset : String
26+ var resetActive : Simulator . Active
27+ var testing : String
28+ var shift : String
29+
30+ private var clockIdentifier : PythonObject
31+ private var resetIdentifier : PythonObject
32+ private var testingIdentifier : PythonObject
33+ private var shiftIdentifier : PythonObject
34+
35+ private var Node : PythonObject
36+
37+ init (
38+ name: String ,
39+ clock: String ,
40+ reset: String ,
41+ resetActive: Simulator . Active ,
42+ testing: String ,
43+ shift: String ,
44+ using Node: PythonObject
45+ ) {
46+ self . name = name
47+ inputName = " \( name) _input "
48+ outputName = " \( name) _output "
49+
50+ self . clock = clock
51+ clockIdentifier = Node . Identifier ( clock)
52+
53+ self . reset = reset
54+ resetIdentifier = Node . Identifier ( reset)
55+
56+ self . resetActive = resetActive
57+
58+ self . testing = testing
59+ testingIdentifier = Node . Identifier ( testing)
60+
61+ self . shift = shift
62+ shiftIdentifier = Node . Identifier ( shift)
63+
64+ self . Node = Node
65+ }
66+
67+ func create(
68+ group: String ,
69+ din: PythonObject ,
70+ dout: PythonObject ,
71+ sin: String ,
72+ sout: String ,
73+ input: Bool
74+ ) -> PythonObject {
75+ let sinIdentifier = Node . Identifier ( sin)
76+ let soutIdentifier = Node . Identifier ( sout)
77+
78+ let name = input ? inputName : outputName
79+
80+ let portArguments = [
81+ Node . PortArg ( " din " , din) ,
82+ Node . PortArg ( " dout " , dout) ,
83+ Node . PortArg ( " sin " , sinIdentifier) ,
84+ Node . PortArg ( " sout " , soutIdentifier) ,
85+ Node . PortArg ( " clock " , clockIdentifier) ,
86+ Node . PortArg ( " reset " , resetIdentifier) ,
87+ Node . PortArg ( " testing " , testingIdentifier) ,
88+ Node . PortArg ( " shift " , shiftIdentifier) ,
89+ ]
90+
91+ let instanceName = " __ \( name) _ \( group) _ \( counter) __ "
92+
93+ let submoduleInstance = Node . Instance (
94+ name,
95+ instanceName,
96+ Python . tuple ( portArguments) ,
97+ Python . tuple ( )
98+ )
99+
100+ counter += 1
101+
102+ return Node . InstanceList (
103+ name,
104+ Python . tuple ( ) ,
105+ Python . tuple ( [ submoduleInstance] )
106+ )
107+ }
108+
109+ var inputDefinition : String {
110+ """
111+ module \( inputName) (
112+ din,
113+ dout,
114+ sin,
115+ sout,
116+ clock,
117+ reset,
118+ testing,
119+ shift
120+ );
121+ input din; output dout;
122+ input sin; output sout;
123+ input clock, reset, testing, shift;
124+
125+ reg store;
126+ always @ (posedge clock or \( resetActive == . high ? " posedge " : " negedge " ) reset) begin
127+ if ( \( resetActive == . high ? " " : " ~ " ) reset) begin
128+ store <= 1'b0;
129+ end else begin
130+ store <= shift ? sin: dout;
132131 end
133- assign sout = store;
134- assign dout = testing ? store : din ;
135- endmodule
136-
137- """
138- }
139-
140- var outputDefinition : String {
141- """
142- module \( outputName ) (
143- din,
144- dout ,
145- sin ,
146- sout ,
147- clock ,
148- reset ,
149- testing ,
150- shift
151- );
152- input din; output dout ;
153- input sin ; output sout ;
154- input clock, reset, testing, shift ;
155- reg store ;
156- always @ (posedge clock or \( resetActive == . high ? " posedge " : " negedge " ) reset) begin
157- if ( \( resetActive == . high ? " " : " ~ " ) reset) begin
158- store <= 1'b0;
159- end else begin
160- store <= shift ? sin: dout;
161- end
132+ end
133+ assign sout = store;
134+ assign dout = testing ? store : din;
135+ endmodule
136+
137+ """
138+ }
139+
140+ var outputDefinition : String {
141+ """
142+ module \( outputName ) (
143+ din ,
144+ dout ,
145+ sin ,
146+ sout ,
147+ clock ,
148+ reset ,
149+ testing,
150+ shift
151+ ) ;
152+ input din ; output dout ;
153+ input sin; output sout ;
154+ input clock, reset, testing, shift ;
155+ reg store;
156+ always @ (posedge clock or \( resetActive == . high ? " posedge " : " negedge " ) reset) begin
157+ if ( \( resetActive == . high ? " " : " ~ " ) reset) begin
158+ store <= 1'b0;
159+ end else begin
160+ store <= shift ? sin: dout;
162161 end
163- assign sout = store;
164- assign dout = din;
165- endmodule
162+ end
163+ assign sout = store;
164+ assign dout = din;
165+ endmodule
166166
167- """
168- }
167+ """
168+ }
169169}
0 commit comments