Mitsubishi QS0J65BTS2-8D 針對代碼自動生成問題,對于頂層模塊來說,承擔的功能是自動地將底層數(shù)十個模塊連接起來。對于底層模塊來說,需要根據(jù)不同的功能定制需求,來自動化地生成所有功能性的代碼,然后被頂層調(diào)用和連接。這樣的話,就存在兩個問題:[1]自動生成頂層模塊?[2]自動生成底層模塊?
(2)頂層模塊:通常來說,對于一個復雜的SoC芯片,會有萬數(shù)量級的信號需要進行匹配和連接。而能夠自動生成的信號文件中的信號連接有兩個特點:一是信號命令規(guī)律性強二是信號的連接關系可以從設計文件中體現(xiàn)。滿足了這兩點,便可以實現(xiàn)信號文件的自動化。
(3)底層模塊此處即可體現(xiàn)Perl腳本強大的數(shù)據(jù)處理功能,針對該問題,將腳本劃分為三類:提取腳本、生成腳本和集成腳本三種。提取腳本用來從輸入文件中提取有用的設計信息到存儲單元中;生成腳本從存儲單元獲得有用信息來生成各個功能模塊的代碼;集成腳本將所有的腳本集成在一個腳本里,方便統(tǒng)一化使用。以下是代碼生成的腳本流程圖:
如圖所示,輸入的文件都是excel和文本形式,Perl腳本首先讀取技術文檔,從中解析出時鐘模塊所需的連接、頻率、時鐘域等信息,基于此信息建立一個數(shù)據(jù)庫。然后,根據(jù)實際芯片的具體需求,即配置文件,生成相應的自動化控制模式和需求。最終,依據(jù)配置文件和數(shù)據(jù)庫,完成所有所需verilog代碼的生成。需要注意的是,并不是所有的代碼都可以自動生成,有些結構特殊的電路,只能通過手工編寫來完成。所以,自動編寫通常完成較為規(guī)整的、有規(guī)律性的代碼,手工書寫作為補充。這樣即可保證得到高質量的代碼。
總結
Perl語言強大的正則和hash能力成就了代碼自動生成技術,在這個領域,其他腳本語言黯然失色。當然,使用Python也可以同樣的功能。
但是,這還遠遠不夠智能。
短期內(nèi),如何使得代碼生成技術更加友好,更方便移植和管理?如何更加徹底地剝離人工干預的工作,腳本自動決定哪些電路需要自動生成的代碼?
在更遠的未來,是否能夠拋棄掉太糾結于細節(jié)的Verilog語言?語言綜合技術HLS、Chisel、AI自動生成代碼和電路是否是更好的選擇?
Mitsubishi QS0J65BTS2-8D
KOLLMORGEN POWER SUPPLY PSR4/5A-112
ELECTRO CRAFT BRU 500
MODICON GOULD SERVO MOTOR CCP 37-R
HEIDENHAIN ENCODER
OKUMA BL-MOTOR BL-MC150J-20SB
FANUC SERVO MOTOR A06B-0502-B001#7076
Enlarge
INDRAMAT SERVO DRIVE HDS02.2-W040N-HS12-01-FW
SIEMENS SIMODRIVE LT MODUL 6SN1123-1AA00-0CA2
EMERSON SERVO MOTOR DXE-480
BOSCH SERVO DRIVE ASM 50-TA
SIEMENS SIMODRIVE 6SN1123-1AA00-0AA1
SIEMENS SIMODRIVE 6SN1123-1AA00-0CA1
SIEMENS SINUMERIK 840D DRIVE 6FC5247-0AA00-0AA2
YASKAWA SERVO DRIVE (CONTROLLER) CACR-SR10SZ1SFY221
YASKAWA SERVOPACK CACR-IR
YASKAWA SERVOPACK CACR-TS111Z1SR
FANUC 10S/3000 SERVO MOTOR
HEIDENHAIN ROD 426.001B-1000 ENCODER
SIEMENS CONTROLLER CARD
SIEMENS SIMODRIVE LT MODUL 6SN 1124-1AB00-0BA0
SIEMENS MAGNET MOTOR 1FT5062-0AF01-2-Z
MOOG BLESS SERVO MOTOR 304-131A
PACIFIC SCIENTIFIC SERVO MOTOR R46SSNA-SS-NS-NV-02
YASKAWA SERVOPACK DRIVE SGDM-75AC-PY389
RELIANCE ELECTRIC SERVO MOTOR 1326AB-B430E-21-K4
SIEMENS ENCODER ROD 426B.016
SIEMENS SERVO MOTOR 1FT5071-OAF01-0
INDRAMAT CONTROLLER CARD CLC-D02.3
YASKAWA SERVOPACK CACR-SR30SZ1SDY173
YASKAWA SERVOPACK CACR-SR30SZ1SDY230
INDRAMAT CONTROLLER DDS02.1-A100-D
INDRAMAT CONTROLLER DDS02.1-A050-D
HEIDENHAIN ENCODER CHECKER VRZ 460
INDRAMAT ENCODER ECN 1313 512
BAUMULER SERVO MOTOR DS 56-M
CML DIRECTIONAL VALVE WE43-G03-C4-AC110
FANUC SERVO DRIVE A06B-6066-H291
FANUC SERVO DRIVE A06B-6089-H105
FANUC SERVO MOTOR A06B-0147-B675
FANUC SERVO MOTOR A06B-0163-B175
FANUC SERVO MOTOR A06B-0318-B274#7000
Siemens 1P-6SN1123-1AA00-0DA0 Drives
HEIDENHAIN ENCODER ROD 320.002-2000
SIEMENS CONTROLLER CARD 6SC6100-0NA11
SIEMENS POWER SUPPLY BOARD 6SC6100-0GB11
INDARMAT PERMANENTMAGNET- DREHSTROM MAC 90B0-0-PD-2-C/1
PANELMATE CUTLER HAMMER 39ST PM 3000
ALLEN BRADELY SERVO 1391-AA15-A12 CONTROLLER 1391
ALLEN BRADLEY SERVO 1391-DES22-DI CONTROLLER 1391
ALLEN BRADLEY DC SERVO CONTROLLER
INDRAMAT SERVO MOTOR MHD093B-035-NP0-AA
STEGMANN ENCODER DG 60 KTM
MODICON GETTY SERVO MOTOR 120-084-002
AEG MODICON SERVO MOTOR CCP 34-R
ALLEN BRADLEY SERVO DRIVE 2098-DSD-020X-DN
ALLEN BRADLEY MPL-A540F-MJ24AA SERVO MOTOR
SIEMENS LINE FILTER 6SL3000-0BE25-5AA0
SIEMENS SIMODRIVE 6SN1123-1AA00-0HA1
WOOD AC INVERTER WFC4005-0C
INDRAMAT MAC092B-0-QD-4-C/095-B-0/W1518L V MOTOR
SIEMENS SERVO MOTOR 1FT6031-4AK71-3EB1
ORMEC SERVO MOTOR MAC-B050/K1A # 130042861316
PROFACE SCREEN
SIEMENS BLESS SERVO MOTOR 1FT5046-1AF71-3EB0
ALLEN BRADLEY SERVO MOTOR 1326AB-B410G-21-K4
AEG SERVO MOTOR CCP 31-RB
ABB SERVO DRIVE ACS601-0011-6-000B1200900
ALLEN BRADLEY PANALVIEW 2711-T5A8LT
ABB SERVO DRIVE ACC600 DRIVE
ALLEN BRADELY 1394-AM07 SERVO CONTROLLER
MOOG DRIVE T150-901B-723-2A
MOOG WIN DRIVE T164-907A-17-H1-2-2A
SEIMENS SERVO MOTOR
ELAU SERVO DRIVE C600/10/1/1/1/00
SIEMENS CONTROLLER CARD 6SN1118-0DJ21-0AA0
INLAND KOLLMORGEN M4 3304-00M-503 MOTOR
SIEMENS SIMODRIVE 6SC 6111-2AA00
MITSUBISHI SERVO POWER SUPPLY
HEIDENHAIN ENCODER ERN 1185.003-2048
FANUC SERVO DRIVE A06B-6058-H005
Gidding & Lewis DSM 110 Servo Drive
NACHI AC SERVO MOTOR MSMA302D9V3
INDRAMAT PERMANENT MAGNET MOTOR MAC090B-0-PD-3-C/110-A-
INDRAMAT PERMANENT MAGNET MOTOR MAC090B-0-PD-3-C/110-A-
MITSUBISHI SERVO MOTOR HA-SE202-UL
SIEMENS SERVO MOTOR 1FT5046-1AF71-3EA0
APEX COMPUMOTOR SERVO DRIVE 95062100342
ALLEN BRADLEY SERVO MOTOR MPL-A430PHK24AA
LENZE SERVO MOTOR MDSKARS071-22
LENZE SERVO MOTOR MDSKSRS071-23
BOSCH SERVO DRIVE SM 10/20-TC