Knowledge

SystemC AMS

Source πŸ“

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:*

Index

SystemC
Accellera
COSEDA Technologies
SystemC AMS-Standard IEEE 1666.1-2016
SystemC AMS Proof-of-Concept Download
"SystemC AMS"
"SystemC AMS (Analog/Mixed-Signal)"
"SystemC-AMS and Design of Embedded Mixed-Signal Systems"
Phase Locked Loop simulator in SystemC AMS
SystemC AMS examples
Categories
Hardware description languages
Hardware verification languages
System description languages

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑