Knowledge

Verilator

Source 📝

363: 64: 296: 26: 248:
Commercially, Philips Semiconductors (now NXP) have led the way. Their use of Verilator is becoming more widespread, for example within application notes. More recently Art of Silicon have described their use of Verilator on a farm of Linux processors as a route to faster regression testing of their
277:
Verilator converts Verilog to C++ or SystemC. It can handle all versions of Verilog and also some SystemVerilog assertions. The approach is closer to synthesis than event-driven simulation. The entire design is flattened (that is, all modules are expanded to create one module). Static analysis is
261:(DEC). It was used to convert Verilog code to C for co-simulation with a C based CPU model of the Alpha processor. During the mid-1990s Duane Galbi took over responsibility for development and the technology was adopted by other groups in DEC. In 1998 DEC released the source code. 249:
commercial designs. The current maintainer of Verilator identified 27 companies and universities who had reported use of Verilator or contributed to its development, including Intel, Arm, CSR, Broadcom, Raytheon, Infineon, Stanford University, Imperial College London and Embecosm.
514:
Chin-Chie Huang, Jaw-Wei Chi, Tzu-Ching Lin, Lin-Wei Tsao, Yi-Jung Chen and Chia-Lin Yang. "System-Level Performance/Power Evaluation Framework for Platform-based SOC", Department of Computer Science and Information Engineering, National Taiwan University,
268:
mode was added and the tool rewritten from scratch in C++, leading to an increase in performance. In 2022 Verilator Version 5 added an IEEE-compliant scheduler and delay semantics, relaxing previous restrictions that ignored all delays.
197:
Verilator has seen its widest adoption in the academic and open source communities. The semiconductor industry has been more cautious in its adoption of an open source tool, and has the financial means to use commercial alternatives.
537:
Jeremy Bennett, Embecosm, "Processor verification using open source tools and the GCC regression test suite: A case study", Design Verification Club meeting, Bristol, Cambridge & Eindhoven, 20 September 2010,
343:
designs can be directly simulated from MATLAB. Using compiled C++ models with MATLAB is faster than using co-simulation interfaces with a separate HDL simulator. There is an open-source project called
1530: 1525: 185:
the clock cycle. Verilator is now used within academic research, open source projects and for commercial semiconductor development. It is part of the growing body of
285:
SystemC is supported by providing a wrapper class using SystemC ports and with sensitivity to the clock(s), which will drive the ports of the underlying C++ model.
607:
Rich Porter, "Designer Productivity - An Alternate Approach", , System-Level Design Network meeting, Engineers House, Bristol, UK 24 September 2009, available at
666:
Wilson Snyder, Cavium Networks, "Verilator: Fast, Free, But for Me?", Design Verification Club meeting, Bristol, Cambridge & Eindhoven, 20 September 2010,
619:
Rich Porter, "Architecture for Massively Parallel HDL Simulations", Design Verification Club meeting, Bristol, Cambridge & Eindhoven, 20 September 2010,
653: 594: 463:
Oyama Masashiro, Tanaka Daisuke and Shimizu Naohiki. "C-language based Hardware and Software Co-Simulation Environment Featuring sfl2vl and Verilator",
282:. A C++ class is generated with a function which takes 2-state values on input ports and advance them to values on output ports at the next clock edge. 237:
could be run against a Verilator model of the OpenRISC 1200 as a way of detecting errors in the Verilog RTL implementation. TestDrive Profiling Master
207: 177:. The generated models are cycle-accurate and 2-state; as a consequence, the models typically offer higher performance than the more widely used 723: 621: 233:
includes a cycle accurate reference model, generated from Verilog using Verilator. A recent paper described how the regression test suite for
368: 560:
Chuck Peplinski, "Hardware Prefetch and Data Cache Optimization Tools for Nexperia Media Processors", NXP Semiconductors, 11 January 2007
257:
Verilator's user manual provides a short history. The tool originated in 1994 with a team led by Paul Wasson at the Core Logic Group at
484:(15th Annual IEEE Symposium on Field-Programmable Custom Computing Machines), 23–25 April 2007, 73–84, (the DOI listed for this paper, 1323: 963: 864: 124: 562: 186: 214:
design flows and in performance and power analysis. Verilator is also a popular tool for student dissertations, for example.
741: 258: 162: 154: 1110: 811: 264:
Since 2001 the technology has been developed by Wilson Snyder and others as part of the Veripool open source project. A
222:
Verilator is an open source tool, and has in turn been adopted by a number of other projects. The Fedora Electronic Lab
43: 501:
Eric S. Chung, James C. Hoe, Babak Falsafi. "PROTO FLEX: Co-Simulation for Component-wise FPGA Emulator Development",
288:
Verilator supports automatically partitioning designs into multiple threads, also potentially improving performance.
1441: 1348: 716: 415:
W Snyder, "Verilator and SystemPerl". North American SystemC Users' Group, Design Automation Conference, June 2004.
376: 1408: 1466: 1436: 1293: 1203: 539: 166: 1506: 1426: 1313: 776: 234: 425: 1118: 973: 667: 381: 1273: 1248: 968: 732: 709: 1373: 1253: 958: 883: 628: 1383: 1368: 1233: 819: 524:
Siddhartha Devalapalli. "Development of SystemC Modules from HDL for System-on-Chip Applications",
107: 1128: 859: 1398: 1378: 1343: 923: 796: 647: 588: 206:
Researchers have used Verilator to develop new co-simulation environments, as part of general
95: 505:(2nd Workshop on Architecture Research using FPGA Platforms), Austin Texas, 12 February 2006. 480:
P Garcia and K Compton. "A Reconfigurable Hardware Interface for a Modern Computing System".
439: 849: 549:
Jean-Paul van Itegem, Philips Semiconductors (now NXP), quoted in Deep Chip 25 October 2005
485: 331:
Verilator converts synthesizable Verilog to C++, while C++ library could be compiled into a
178: 128: 119: 82: 1188: 1178: 1123: 1038: 608: 223: 63: 569: 1243: 1208: 1053: 928: 918: 295: 1519: 1048: 903: 1451: 1283: 1173: 1148: 1138: 1023: 993: 351:
using Verilator and provides a set of functions for model simulation from MATLAB.
1421: 1358: 1328: 1223: 1043: 677: 550: 238: 225:
has adopted Verilator as part of its open source design flow for Fedora 11. The
1461: 1333: 1263: 1085: 1080: 1075: 1070: 1028: 1013: 998: 801: 358: 33: 467:(Information Processing Society of Japan Symposium Thesis Collection), 2004 ( 1488: 1446: 1431: 1393: 1218: 1090: 1060: 791: 386: 230: 112: 25: 1388: 1338: 1288: 1268: 1258: 1198: 1183: 1133: 1095: 1003: 988: 953: 938: 933: 908: 898: 869: 844: 829: 781: 771: 766: 489: 391: 348: 332: 226: 52: 1494: 1213: 1193: 1168: 1163: 1158: 1153: 1143: 1100: 1033: 1008: 983: 978: 913: 854: 824: 761: 756: 396: 340: 265: 174: 158: 91: 344: 1456: 1065: 1018: 943: 336: 99: 170: 1482: 1278: 1238: 1228: 948: 839: 87: 1416: 1363: 1353: 1318: 834: 786: 211: 705: 701: 290: 240:
tool provides the virtual FPGA environment using Verilator.
694: 139: 307: 1475: 1407: 1306: 1109: 891: 882: 810: 749: 740: 278:used to eliminate wires and schedule all processes 134: 118: 106: 81: 73: 42: 32: 528:, University of Tennessee, Knoxville, August 2004. 678:Wilson Snyder, "Verilator-3.700", 7 January 2009 1531:Electronic design automation software for Linux 609:www.slideshare.net/richporter/20090924aosnmiesl 717: 8: 18: 1526:Free electronic design automation software 888: 746: 724: 710: 702: 62: 24: 17: 440:"Arch Linux - verilator 4.224-1 (x86_64)" 465:Joho Shori Gakkai Shinpojiumu Ronbunshu 408: 652:: CS1 maint: archived copy as title ( 645: 593:: CS1 maint: archived copy as title ( 586: 7: 369:Free and open-source software portal 14: 361: 294: 167:cycle-accurate behavioral model 339:interface to C++. This is how 1: 964:Creo Elements/Direct Drafting 347:that compiles Verilog into a 259:Digital Equipment Corporation 163:hardware description language 155:free and open-source software 273:Technology and key features 181:, which can model behavior 1547: 377:Comparison of EDA software 1504: 23: 280:at model generation time 1507:History of CAD software 1427:Open Cascade Technology 777:Open Cascade Technology 179:event-driven simulators 974:DesignSpark Mechanical 382:List of HDL simulators 1264:SolidWorks Electrical 742:Free and open-source 490:10.1109/FCCM.2007.49 157:tool which converts 20: 1129:AutoCAD Electrical 306:. You can help by 229:architecture from 1513: 1512: 1302: 1301: 969:Creo Elements/Pro 924:Autodesk Inventor 878: 877: 575:on 20 August 2008 327:Using with MATLAB 324: 323: 187:free EDA software 148: 147: 96:Microsoft Windows 1538: 1409:Modeling kernels 889: 747: 726: 719: 712: 703: 698: 697: 695:Official website 680: 675: 669: 664: 658: 657: 651: 643: 641: 639: 634:on 13 March 2012 633: 627:. Archived from 626: 617: 611: 605: 599: 598: 592: 584: 582: 580: 574: 568:. Archived from 567: 558: 552: 547: 541: 535: 529: 526:MSc Dissertation 522: 516: 512: 506: 499: 493: 478: 472: 461: 455: 454: 452: 450: 436: 430: 429: 422: 416: 413: 371: 366: 365: 364: 319: 316: 298: 291: 144: 141: 83:Operating system 66: 61: 58: 56: 54: 28: 21: 1546: 1545: 1541: 1540: 1539: 1537: 1536: 1535: 1516: 1515: 1514: 1509: 1500: 1471: 1403: 1298: 1179:DesignSpark PCB 1124:Altium Designer 1105: 874: 806: 736: 730: 693: 692: 689: 684: 683: 676: 672: 665: 661: 644: 637: 635: 631: 624: 622:"Archived copy" 620: 618: 614: 606: 602: 585: 578: 576: 572: 565: 563:"Archived copy" 561: 559: 555: 548: 544: 536: 532: 523: 519: 513: 509: 500: 496: 479: 475: 462: 458: 448: 446: 438: 437: 433: 424: 423: 419: 414: 410: 405: 367: 362: 360: 357: 329: 320: 314: 311: 304:needs expansion 275: 255: 246: 220: 204: 195: 138: 69: 51: 12: 11: 5: 1544: 1542: 1534: 1533: 1528: 1518: 1517: 1511: 1510: 1505: 1502: 1501: 1499: 1498: 1492: 1486: 1479: 1477: 1473: 1472: 1470: 1469: 1464: 1459: 1454: 1449: 1444: 1439: 1434: 1429: 1424: 1419: 1413: 1411: 1405: 1404: 1402: 1401: 1396: 1391: 1386: 1381: 1376: 1371: 1366: 1361: 1356: 1351: 1346: 1341: 1336: 1331: 1326: 1321: 1316: 1310: 1308: 1304: 1303: 1300: 1299: 1297: 1296: 1291: 1286: 1281: 1276: 1271: 1266: 1261: 1256: 1251: 1246: 1241: 1236: 1231: 1226: 1221: 1216: 1211: 1209:IntegraStation 1206: 1201: 1196: 1191: 1186: 1181: 1176: 1171: 1166: 1161: 1156: 1151: 1146: 1141: 1136: 1131: 1126: 1121: 1115: 1113: 1107: 1106: 1104: 1103: 1098: 1093: 1088: 1083: 1078: 1073: 1068: 1063: 1058: 1057: 1056: 1054:Grasshopper 3D 1046: 1041: 1036: 1031: 1026: 1021: 1016: 1011: 1006: 1001: 996: 991: 986: 981: 976: 971: 966: 961: 956: 951: 946: 941: 936: 931: 929:Autodesk Revit 926: 921: 919:Autodesk Alias 916: 911: 906: 901: 895: 893: 886: 880: 879: 876: 875: 873: 872: 867: 862: 857: 852: 847: 842: 837: 832: 827: 822: 816: 814: 808: 807: 805: 804: 799: 794: 789: 784: 779: 774: 769: 764: 759: 753: 751: 744: 738: 737: 731: 729: 728: 721: 714: 706: 700: 699: 688: 687:External links 685: 682: 681: 670: 659: 612: 600: 553: 542: 530: 517: 507: 494: 473: 456: 431: 417: 407: 406: 404: 401: 400: 399: 394: 389: 384: 379: 373: 372: 356: 353: 328: 325: 322: 321: 301: 299: 274: 271: 254: 251: 245: 242: 219: 216: 203: 200: 194: 191: 146: 145: 136: 132: 131: 122: 116: 115: 110: 104: 103: 85: 79: 78: 75: 71: 70: 68: 67: 48: 46: 40: 39: 36: 30: 29: 13: 10: 9: 6: 4: 3: 2: 1543: 1532: 1529: 1527: 1524: 1523: 1521: 1508: 1503: 1496: 1493: 1490: 1487: 1484: 1481: 1480: 1478: 1474: 1468: 1465: 1463: 1460: 1458: 1455: 1453: 1450: 1448: 1445: 1443: 1440: 1438: 1435: 1433: 1430: 1428: 1425: 1423: 1420: 1418: 1415: 1414: 1412: 1410: 1406: 1400: 1397: 1395: 1392: 1390: 1387: 1385: 1382: 1380: 1377: 1375: 1372: 1370: 1367: 1365: 1362: 1360: 1357: 1355: 1352: 1350: 1347: 1345: 1342: 1340: 1337: 1335: 1332: 1330: 1327: 1325: 1322: 1320: 1317: 1315: 1312: 1311: 1309: 1305: 1295: 1292: 1290: 1287: 1285: 1282: 1280: 1277: 1275: 1272: 1270: 1267: 1265: 1262: 1260: 1257: 1255: 1252: 1250: 1247: 1245: 1242: 1240: 1237: 1235: 1232: 1230: 1227: 1225: 1222: 1220: 1217: 1215: 1212: 1210: 1207: 1205: 1202: 1200: 1197: 1195: 1192: 1190: 1187: 1185: 1182: 1180: 1177: 1175: 1172: 1170: 1167: 1165: 1162: 1160: 1157: 1155: 1152: 1150: 1147: 1145: 1142: 1140: 1137: 1135: 1132: 1130: 1127: 1125: 1122: 1120: 1117: 1116: 1114: 1112: 1108: 1102: 1099: 1097: 1094: 1092: 1089: 1087: 1084: 1082: 1079: 1077: 1074: 1072: 1069: 1067: 1064: 1062: 1061:rattleCAD 4.0 1059: 1055: 1052: 1051: 1050: 1049:Rhinoceros 3D 1047: 1045: 1042: 1040: 1037: 1035: 1032: 1030: 1027: 1025: 1022: 1020: 1017: 1015: 1012: 1010: 1007: 1005: 1002: 1000: 997: 995: 992: 990: 987: 985: 982: 980: 977: 975: 972: 970: 967: 965: 962: 960: 957: 955: 952: 950: 947: 945: 942: 940: 937: 935: 932: 930: 927: 925: 922: 920: 917: 915: 912: 910: 907: 905: 904:Alibre Design 902: 900: 897: 896: 894: 890: 887: 885: 881: 871: 868: 866: 863: 861: 858: 856: 853: 851: 848: 846: 843: 841: 838: 836: 833: 831: 828: 826: 823: 821: 818: 817: 815: 813: 809: 803: 800: 798: 795: 793: 790: 788: 785: 783: 780: 778: 775: 773: 770: 768: 765: 763: 760: 758: 755: 754: 752: 748: 745: 743: 739: 734: 727: 722: 720: 715: 713: 708: 707: 704: 696: 691: 690: 686: 679: 674: 671: 668: 663: 660: 655: 649: 630: 623: 616: 613: 610: 604: 601: 596: 590: 571: 564: 557: 554: 551: 546: 543: 540: 534: 531: 527: 521: 518: 511: 508: 504: 498: 495: 492:is incorrect) 491: 487: 483: 477: 474: 470: 466: 460: 457: 445: 444:archlinux.org 441: 435: 432: 427: 421: 418: 412: 409: 402: 398: 395: 393: 390: 388: 385: 383: 380: 378: 375: 374: 370: 359: 354: 352: 350: 346: 342: 338: 334: 326: 318: 309: 305: 302:This section 300: 297: 293: 292: 289: 286: 283: 281: 272: 270: 267: 262: 260: 252: 250: 243: 241: 239: 236: 232: 228: 224: 217: 215: 213: 209: 201: 199: 192: 190: 188: 184: 180: 176: 172: 168: 164: 160: 156: 152: 143: 137: 133: 130: 126: 125:LGPL-3.0-only 123: 121: 117: 114: 111: 109: 105: 101: 97: 93: 89: 86: 84: 80: 76: 72: 65: 60: 50: 49: 47: 45: 41: 38:Wilson Snyder 37: 35: 31: 27: 22: 16: 1452:ShapeManager 1307:File formats 1174:Delta Design 1149:CircuitMaker 1139:BoardStation 1024:MicroStation 673: 662: 638:24 September 636:. Retrieved 629:the original 615: 603: 577:. Retrieved 570:the original 556: 545: 533: 525: 520: 510: 502: 497: 481: 476: 468: 464: 459: 447:. Retrieved 443: 434: 420: 411: 330: 312: 308:adding to it 303: 287: 284: 279: 276: 263: 256: 247: 221: 205: 196: 182: 150: 149: 129:Artistic-2.0 34:Developer(s) 15: 1044:Pro/DESKTOP 884:Proprietary 218:Open Source 1520:Categories 1462:IntelliCAD 1111:Electrical 1086:T-FLEX CAD 1081:SpaceClaim 1076:SolidWorks 1071:Solid Edge 1014:KeyCreator 999:Fusion 360 892:Mechanical 812:Electrical 802:SolveSpace 750:Mechanical 503:WARFP 2006 426:"Veripool" 403:References 315:March 2009 244:Commercial 74:Written in 59:/verilator 57:/verilator 44:Repository 1489:Sketchpad 1447:KernelCAD 1432:Parasolid 1294:Xpedition 1284:Ultiboard 1219:Micro-Cap 1204:FreeStyle 1091:Tinkercad 792:rattleCAD 482:FCCM 2007 471:), 34–40. 387:OpenCores 231:OpenCores 151:Verilator 140:verilator 113:Simulator 19:Verilator 1289:Upverter 1259:Pulsonix 1224:Multisim 1199:Easytrax 1184:DipTrace 1134:Autotrax 1096:TurboCAD 1004:GstarCAD 954:Cimatron 939:BricsCAD 934:AutoTURN 909:ArchiCAD 899:ABViewer 870:XCircuit 845:kTechLab 830:Fritzing 820:Electric 782:OpenSCAD 772:LibreCAD 767:HeeksCAD 735:software 648:cite web 589:cite web 579:13 March 449:7 August 392:OpenRISC 355:See also 349:MEX file 333:MEX file 227:OpenRISC 202:Academic 1495:UNISURF 1442:Romulus 1374:OpenDWG 1254:Proteus 1214:LTspice 1194:EasyEDA 1169:CR-8000 1164:CR-5000 1159:CR-3000 1154:CR-2000 1144:CADSTAR 1119:Allegro 1101:VariCAD 1034:Onshape 1009:IRONCAD 984:FastCAD 979:EasyCAD 914:AutoCAD 860:Oregano 855:ngspice 825:FreePCB 762:FreeCAD 757:BRL-CAD 397:Verilog 341:Verilog 266:SystemC 253:History 175:SystemC 165:) to a 159:Verilog 135:Website 120:License 92:FreeBSD 1497:(1968) 1491:(1963) 1485:(1963) 1457:Teigha 1384:PSpice 1274:TARGET 1249:Protel 1066:RUCAPS 1019:MEDUSA 959:Cobalt 944:CADKEY 797:Salome 345:vmodel 337:MATLAB 335:using 183:within 100:Cygwin 53:github 1483:DAC-1 1467:SMLib 1279:TopoR 1269:Tango 1239:P-CAD 1229:OrCAD 1189:EAGLE 994:FORAN 949:CATIA 850:Magic 840:KiCad 632:(PDF) 625:(PDF) 573:(PDF) 566:(PDF) 515:2008. 193:Usage 153:is a 98:(via 88:Linux 1417:ACIS 1394:STEP 1364:IGES 1349:DWFX 1319:ACIS 1234:PADS 1039:PDMS 989:FINE 865:QUCS 835:gEDA 787:QCAD 654:link 640:2010 595:link 581:2009 451:2022 212:FPGA 210:and 208:ASIC 142:.org 108:Type 55:.com 1476:Old 1437:RGK 1422:C3D 1399:STL 1389:SES 1379:PLY 1369:OBJ 1359:DXF 1354:DWG 1344:DWF 1339:DSN 1334:CKD 1329:C3D 1324:AMF 1314:3MF 1244:PCB 733:CAD 486:doi 310:. 235:GCC 173:or 171:C++ 169:in 161:(a 127:or 77:C++ 1522:: 1029:NX 650:}} 646:{{ 591:}} 587:{{ 469:10 442:. 189:. 94:, 90:, 725:e 718:t 711:v 656:) 642:. 597:) 583:. 488:: 453:. 428:. 317:) 313:( 102:)

Index


Developer(s)
Repository
github.com/verilator/verilator
Edit this at Wikidata
Operating system
Linux
FreeBSD
Microsoft Windows
Cygwin
Type
Simulator
License
LGPL-3.0-only
Artistic-2.0
verilator.org
free and open-source software
Verilog
hardware description language
cycle-accurate behavioral model
C++
SystemC
event-driven simulators
free EDA software
ASIC
FPGA

OpenRISC
OpenCores
GCC

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