81:
have greater stability and are fast when the state has only advanced slightly from the previous time step. When the kernel de-queues a time-advancing event from the event queue, the simulation time is advanced. The analogue part of the simulator maintains a time quantum beyond which the nodal equations need to be re-computed. This quantum is dynamically adjusted depending on the behaviour of the equations. If the equations are `bendy', meaning that linear extrapolation using Euler's method over the quantum will lead to too much error, the time step is reduced, otherwise it can be gradually enlarged at each step. Overall, two forms of iteration are needed: the first is iteration at a time step to solve the nodal equations to a sufficient accuracy. The second is between time steps. In a simple implementation, once simulation time has advanced beyond the Euler quantum, the analogue sub-system is re-solved. If the extrapolation errors are too great, the simulator must go back to the last time step and simulate forward again using a smaller analogue quantum. This mechanism is also the basis for SPICE simulations. Each analogue variable that is the argument to a `cross', or other analogue sensitivity, is then examined to see if new digital domain work has been triggered. If so, new events are injected on the discrete event queue for the current simulation time.
77:
that has just a few state variables, such as the car transmission system because there are orders of magnitude difference in time constants (e.g. 100 MHz clock versus 1~ms shortest inertial time constant). Simulating the analogue subsystem inside the RTL simulator then makes sense. Moreover, most plant control situations use closed-loop negative feedback with the controller being just as good at managing a slightly errored plant model as the real model.
60:
model defines a method called `processing()' that is invoked at the appropriate rate as simulation time advances. A so-called cluster of models share a static schedule of when they should communicate. This sets the relative ordering of the calls to the processing() methods of each TDF instance in the cluster. The periodic behaviour of TDF allows it to operate independently of the main SystemC event-driven kernel used for digital logic.
90:
a standard operator library is that `reflection' is possible: other code can analyse the structure and perform analytic differentiation, summation, integration and other forms of analysis, such as sensitivity analysis to determine a good time step. This would not be possible for an implementation using ad-hoc coding. In general programming, reflection refers to a program being able to read its own source code.
80:
Under the ELN formalism, the SystemC initialisation and simulation cycles are extended to support solving nodal flow equations. Nodal equation solving is generally solved iteratively rather than using direct methods such as
Gaussian Elimination or based on matrix inverses. Iterative methods tend to
76:
The error in Euler's method decreases quadratically with smaller time steps, but an overly-small time step results in a slow simulation for a complex finite-element simulation. But this is not a problem in many situations where part of a complex SoC or plant controller is run alongside a plant model
89:
The SystemC linear signal flow (LSF) library provides a set of primitive analogue operators, such as adders and differentiators that enable all basic structures found in differential equations to be constructed in a self-documenting and executable form. The advantage of constructing the system from
59:
In the timed data flow (TDF) model, components exchange analogue values with each other on a periodic basis at a chosen sampling rate, such as every 10 microseconds. By the sampling theorem, this would be sufficient to convey signals of up to 50 MHz bandwidth without aliasing artefacts. A TDF
1197:
Systems
Initiative, resulting in the AMS 1.0 standard in 2010. After the release of the Accellera SystemC AMS 2.0 standard in 2013, the standard was transferred to the IEEE Standards Association in 2014 for further industry adoption and maintenance. The SystemC AMS standard was released April 6,
72:
Current flowing in ELN networks of resistors can be solved with a suitable simultaneous equation solver. These are called the nodal equations. Where time-varying components, such as capacitors and inductors are included, Euler's method is typically implemented to model them. Euler's method is a
1192:
SystemC AMS study group was founded in 2002 to develop and maintain analog and mixed-signal extensions to SystemC, and to initiate an OSCI (Open SystemC initiative) SystemC-AMS working group. The study group has made initial investigations and specified and implemented a SystemC extension to
73:
simple approach to solving finite-difference time-domain (FDTD) problems. For instance, to simulate the capacitor charge problem on the left below, a timestep delta\_t is selected that is typically about one percent of the time constant and the iteration on the bottom right is executed.
68:
The SystemC electrical linear networks (ELN) library provides a set of standard electrical components that enable SPICE-like simulations to be run. The three basic components, resistors, capacitors and inductors are, of course, available. Further voltage-controlled variants, such as a
51:(MoC) is a set of rules defining the behavior and interaction between SystemC AMS primitive modules. SystemC AMS defines the following models of computation: timed data flow (TDF), linear signal flow (LSF) and electrical linear networks (ELN).
635:
1193:
demonstrate feasibility of the approach. In 2006, a SystemC AMS working group has been funded which continued the work of the study group inside OSCI, and now goes on to work on SystemC AMS within the
1339:
1334:
551:
1206:
1344:
69:
transconductance amplifier (voltage-controlled current generator) enable most FET and other semiconductor models to be readily created.
23:
for analog, mixed-signal and RF functionality. The SystemC AMS 2.0 standard was released on April 6, 2016 as IEEE Std 1666.1-2016.
1202:
provides with COSIDE the first commercially available design environment based on SystemC AMS standard.
1199:
1255:
1231:
1211:
267:// introduced for convenience: sca_util::sca_vector<TYPE> β sca_vector<TYPE>
1328:
1306:
1194:
630:{\displaystyle H(s)={\frac {1}{1+{\frac {1}{2*\pi *f_{\mathrm {cut} }}}s}}}
20:
297:// introduced for convenience: sca_ac_analysis::sca_ac() β sca_ac()
282:// introduced for convenience: sca_core::sca_time() β sca_time()
1279:
1315:
1280:"SystemC-AMS and Design of Embedded Mixed-Signal Systems"
540:// linear transfer function (numerator/de-numerator type)
872:
Electrical-Linear-Networks 1st order low pass netlist:
554:
405:// simulator callback for AC behavior implementation
641:// initialize linear transfer function coefficients
629:
393:// simulator callback for initialization purpose
119:<PortType> // DE β TDF inport sca_tdf::
1311:Keywords: Phase Locked Loop, PLL, SystemC-AMS
417:// simulator callback for time implementation
8:
1307:Phase Locked Loop simulator in SystemC AMS
244:Timed-Data-Flow 1st order low pass model:
605:
604:
582:
570:
553:
1223:
1212:SystemC AMS Proof-of-Concept Download
1207:SystemC AMS-Standard IEEE 1666.1-2016
123:<PortType> // TDF β DE outport
112:TDF converter in/outport definition:
7:
1256:"SystemC AMS (Analog/Mixed-Signal)"
1320:Keywords: Filter, ADC, SystemC-AMS
612:
609:
606:
14:
64:ELN - Electrical Linear Networks
1340:Hardware verification languages
184:"trace_file_name.dat"
1335:Hardware description languages
1198:2016 as IEEE Std 1666.1-2016.
564:
558:
1:
814:// time domain implementation
178:sca_create_tabular_trace_file
1345:System description languages
1184:Linear-Signal-Flow netlist:
501:// de-numerator coefficients
753:tdf_low_pass::ac_processing
105:<PortType> sca_tdf::
98:TDF in/outport definition:
1361:
548:linear transfer function:
43:MoC - Model of Computation
480:// numerator coefficients
450:// cut-off frequency 1kHz
126:ELN terminal definition:
874:
820:tdf_low_pass::processing
811:
744:
647:tdf_low_pass::initialize
638:
246:
163:
85:LSF - Linear Signal Flow
631:
148:// ELN reference node
144:// ELN node sca_eln::
27:Language specification
1318:- Wolfgang Scherr -
632:
55:TDF - Timed Data Flow
1316:SystemC AMS examples
982:eln_low_pass_netlist
892:// sca eln terminals
883:eln_low_pass_netlist
747:// AC implementation
552:
378:// cut-off frequency
49:model of computation
1284:www.systemc-ams.org
1200:COSEDA Technologies
252:<systemc-ams>
19:is an extension to
809:ToDo: description
742:ToDo: description
627:
156:ToDo: description
39:ToDo: description
31:ToDo: description
1309:- AmΓ©rico Dias -
925:// internal nodes
625:
619:
109:<PortType>
35:Language features
1352:
1294:
1293:
1291:
1290:
1276:
1270:
1269:
1267:
1266:
1252:
1246:
1245:
1243:
1242:
1228:
1175:
1172:
1169:
1166:
1163:
1160:
1157:
1154:
1151:
1148:
1145:
1142:
1139:
1136:
1133:
1130:
1127:
1124:
1121:
1118:
1115:
1112:
1109:
1106:
1103:
1100:
1097:
1094:
1091:
1088:
1085:
1082:
1079:
1076:
1073:
1070:
1067:
1064:
1061:
1058:
1055:
1052:
1049:
1046:
1043:
1040:
1037:
1034:
1031:
1028:
1025:
1022:
1019:
1016:
1013:
1010:
1007:
1004:
1001:
998:
995:
992:
989:
986:
983:
980:
977:
974:
971:
968:
965:
962:
959:
956:
953:
950:
947:
944:
941:
938:
935:
932:
929:
926:
923:
920:
917:
914:
911:
908:
905:
902:
899:
896:
893:
890:
887:
884:
881:
878:
863:
860:
857:
854:
851:
848:
845:
842:
839:
836:
833:
830:
827:
824:
821:
818:
815:
805:
802:
799:
796:
793:
790:
787:
784:
781:
778:
775:
772:
769:
766:
763:
760:
757:
754:
751:
748:
738:
735:
732:
729:
726:
723:
720:
717:
714:
711:
708:
705:
702:
699:
696:
693:
690:
687:
684:
681:
678:
675:
672:
669:
666:
663:
660:
657:
654:
651:
648:
645:
642:
636:
634:
633:
628:
626:
624:
620:
618:
617:
616:
615:
583:
571:
544:
541:
538:
535:
532:
529:
526:
523:
520:
517:
514:
511:
508:
505:
502:
499:
496:
493:
490:
487:
484:
481:
478:
475:
472:
469:
466:
463:
460:
457:
454:
451:
448:
445:
442:
439:
436:
433:
430:
427:
424:
421:
418:
415:
412:
409:
406:
403:
400:
397:
394:
391:
388:
385:
382:
379:
376:
373:
370:
367:
364:
361:
358:
355:
352:
349:
346:
343:
340:
337:
334:
331:
328:
325:
322:
319:
316:
313:
310:
307:
304:
301:
298:
295:
292:
289:
286:
283:
280:
277:
274:
271:
268:
265:
262:
259:
256:
253:
250:
230:
227:
226:"name"
224:
221:
218:
215:
212:
209:
206:
203:
200:
197:
194:
191:
188:
185:
182:
179:
176:
173:
170:
167:
1360:
1359:
1355:
1354:
1353:
1351:
1350:
1349:
1325:
1324:
1303:
1298:
1297:
1288:
1286:
1278:
1277:
1273:
1264:
1262:
1254:
1253:
1249:
1240:
1238:
1230:
1229:
1225:
1220:
1190:
1182:
1177:
1176:
1173:
1170:
1167:
1164:
1161:
1158:
1155:
1152:
1149:
1146:
1143:
1140:
1137:
1134:
1131:
1128:
1125:
1122:
1119:
1116:
1113:
1110:
1107:
1104:
1101:
1098:
1095:
1092:
1089:
1086:
1083:
1080:
1077:
1074:
1071:
1068:
1065:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1014:
1011:
1009:"i_c"
1008:
1005:
1002:
999:
997:"i_r"
996:
993:
990:
987:
984:
981:
978:
975:
972:
969:
966:
963:
960:
957:
954:
951:
948:
945:
942:
939:
936:
933:
930:
927:
924:
921:
918:
915:
912:
909:
906:
903:
900:
897:
894:
891:
888:
885:
882:
879:
876:
870:
865:
864:
861:
858:
855:
852:
849:
846:
843:
840:
837:
834:
831:
828:
825:
822:
819:
816:
813:
807:
806:
803:
800:
797:
794:
791:
788:
785:
782:
779:
776:
773:
770:
767:
764:
761:
758:
755:
752:
749:
746:
740:
739:
736:
733:
730:
727:
724:
721:
718:
715:
712:
709:
706:
703:
700:
697:
694:
691:
688:
685:
682:
679:
676:
673:
670:
667:
664:
661:
658:
655:
652:
649:
646:
643:
640:
600:
587:
575:
550:
549:
546:
545:
542:
539:
536:
533:
530:
527:
524:
522:// state vector
521:
518:
515:
512:
509:
506:
503:
500:
497:
494:
491:
488:
485:
482:
479:
476:
473:
470:
467:
464:
461:
458:
455:
452:
449:
446:
443:
440:
437:
434:
431:
428:
425:
422:
419:
416:
413:
410:
407:
404:
401:
398:
395:
392:
389:
386:
383:
380:
377:
374:
371:
368:
365:
362:
359:
356:
353:
350:
347:
344:
341:
338:
335:
332:
329:
326:
323:
320:
317:
314:
311:
308:
305:
302:
299:
296:
293:
291:sca_ac_analysis
290:
287:
284:
281:
278:
275:
272:
269:
266:
263:
260:
257:
254:
251:
248:
242:
237:
232:
231:
228:
225:
222:
219:
216:
213:
210:
207:
204:
201:
198:
195:
192:
189:
186:
183:
180:
177:
174:
171:
168:
165:
162:
157:
154:
149:
138:
133:
124:
110:
96:
87:
66:
57:
45:
40:
37:
32:
29:
12:
11:
5:
1358:
1356:
1348:
1347:
1342:
1337:
1327:
1326:
1323:
1322:
1313:
1302:
1301:External links
1299:
1296:
1295:
1271:
1247:
1222:
1221:
1219:
1216:
1215:
1214:
1209:
1189:
1186:
1181:
1178:
943:// eln modules
875:
869:
866:
812:
745:
639:
623:
614:
611:
608:
603:
599:
596:
593:
590:
586:
581:
578:
574:
569:
566:
563:
560:
557:
420:// constructor
300:SCA_TDF_MODULE
247:
241:
238:
236:
233:
166:sca_trace_file
164:
161:
158:
155:
153:
150:
139:
137:
134:
128:
114:
100:
95:
92:
86:
83:
65:
62:
56:
53:
44:
41:
38:
36:
33:
30:
28:
25:
13:
10:
9:
6:
4:
3:
2:
1357:
1346:
1343:
1341:
1338:
1336:
1333:
1332:
1330:
1321:
1317:
1314:
1312:
1308:
1305:
1304:
1300:
1285:
1281:
1275:
1272:
1261:
1260:accellera.org
1257:
1251:
1248:
1237:
1236:accellera.org
1233:
1232:"SystemC AMS"
1227:
1224:
1217:
1213:
1210:
1208:
1205:
1204:
1203:
1201:
1196:
1187:
1185:
1179:
873:
867:
810:
774:sca_ac_ltf_nd
743:
637:
621:
601:
597:
594:
591:
588:
584:
579:
576:
572:
567:
561:
555:
399:ac_processing
366:// parameters
245:
239:
234:
159:
151:
147:
143:
135:
132:
127:
122:
118:
113:
108:
104:
99:
93:
91:
84:
82:
78:
74:
70:
63:
61:
54:
52:
50:
42:
34:
26:
24:
22:
18:
1319:
1310:
1287:. Retrieved
1283:
1274:
1263:. Retrieved
1259:
1250:
1239:. Retrieved
1235:
1226:
1191:
1183:
934:sca_node_ref
916:sca_terminal
901:sca_terminal
871:
808:
741:
547:
429:tdf_low_pass
315:// TDF ports
306:tdf_low_pass
243:
235:Example code
146:sca_node_ref
145:
141:
131:sca_terminal
130:
125:
120:
116:
111:
106:
102:
97:
88:
79:
75:
71:
67:
58:
48:
46:
16:
15:
17:SystemC AMS
1329:Categories
1289:2016-08-01
1265:2016-08-01
1241:2016-08-01
1218:References
531:sca_ltf_nd
504:sca_vector
483:sca_vector
462:sca_vector
411:processing
387:initialize
381:// methods
1195:Accellera
877:SC_MODULE
598:∗
595:π
592:∗
288:namespace
273:namespace
258:namespace
190:sca_trace
140:sca_eln::
129:sca_eln::
115:sca_tdf::
101:sca_tdf::
423:SCA_CTOR
276:sca_core
261:sca_util
249:#include
142:sca_node
1188:History
976:SC_CTOR
961:sca_eln
946:sca_eln
928:sca_eln
910:sca_eln
895:sca_eln
525:sca_tdf
456:private
348:sca_out
342:sca_tdf
318:sca_tdf
160:Tracing
152:Cluster
107:sca_out
21:SystemC
832:ltf_nd
792:sca_ac
759:sca_ac
534:ltf_nd
510:double
489:double
468:double
369:double
354:double
330:double
324:sca_in
211:SIGNAL
121:sc_out
103:sca_in
1117:1.0e3
1090:value
1024:value
967:sca_c
952:sca_r
850:state
516:state
444:1.0e3
285:using
270:using
255:using
136:Nodes
117:sc_in
94:Ports
1159:bind
1135:bind
1111:M_PI
1072:bind
1048:bind
826:outp
817:void
765:outp
750:void
731:fcut
725:M_PI
644:void
513:>
507:<
492:>
486:<
471:>
465:<
438:fcut
408:void
396:void
384:void
372:fcut
360:outp
357:>
351:<
333:>
327:<
220:>
217:NODE
205:PORT
202:<
1180:LSF
1165:gnd
1147:i_c
1123:i_c
1105:2.0
1096:1.0
1084:i_c
1060:i_r
1036:i_r
1030:1.0
1018:i_r
1003:i_c
991:i_r
970:i_c
955:i_r
937:gnd
868:ELN
856:inp
844:den
838:num
823:(){
801:));
798:inp
786:den
780:num
756:(){
719:2.0
710:1.0
695:den
689:1.0
674:den
668:1.0
653:num
650:(){
495:den
474:num
414:();
402:();
390:();
336:inp
240:TDF
1331::
1282:.
1258:.
1234:.
1174:};
1168:);
1144:);
1141:n2
1120:);
1081:);
1078:n2
1057:);
1054:n1
1000:),
964:::
949:::
931:::
919:n2
913:::
904:n1
898:::
859:);
734:);
543:};
528:::
345:::
321:::
229:);
196:tf
187:);
172:tf
47:A
1292:.
1268:.
1244:.
1171:}
1162:(
1156:.
1153:n
1150:.
1138:(
1132:.
1129:p
1126:.
1114:*
1108:*
1102:(
1099:/
1093:=
1087:.
1075:(
1069:.
1066:n
1063:.
1051:(
1045:.
1042:p
1039:.
1033:;
1027:=
1021:.
1015:{
1012:)
1006:(
994:(
988::
985:)
979:(
973:;
958:;
940:;
922:;
907:;
889:{
886:)
880:(
862:}
853:,
847:,
841:,
835:(
829:=
804:}
795:(
789:,
783:,
777:(
771:=
768:)
762:(
737:}
728:*
722:*
716:(
713:/
707:=
704:)
701:1
698:(
692:;
686:=
683:)
680:0
677:(
671:;
665:=
662:)
659:0
656:(
622:s
613:t
610:u
607:c
602:f
589:2
585:1
580:+
577:1
573:1
568:=
565:)
562:s
559:(
556:H
537:;
519:;
498:;
477:;
459::
453:}
447:;
441:=
435:{
432:)
426:(
375:;
363:;
339:;
312:{
309:)
303:(
294:;
279:;
264:;
223:,
214:|
208:|
199:,
193:(
181:(
175:=
169:*
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.