diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/ahb_bootrom.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/ahb_bootrom.v new file mode 100644 index 0000000000000000000000000000000000000000..5031a98de8ff274fb846a9bc902ca595037db7ce --- /dev/null +++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/ahb_bootrom.v @@ -0,0 +1,29 @@ +module ahb_bootrom #( + // Parameters + parameter AW = 10 // Address width + ) + ( + input wire HCLK, // Clock + input wire HRESETn, // Reset + input wire HSEL, // Device select + input wire [AW-1:0] HADDR, // Address + input wire [1:0] HTRANS, // Transfer control + input wire [2:0] HSIZE, // Transfer size + input wire HWRITE, // Write control + input wire [31:0] HWDATA, // Write data - not used + input wire HREADY, // Transfer phase done + output wire HREADYOUT, // Device ready + output wire [31:0] HRDATA, // Read data output + output wire HRESP // Device response (always OKAY) +); + + bootrom u_bootrom ( + .CLK (HCLK), + .EN (HSEL & HTRANS[1] & HREADY & !HWRITE), + .ADDR (HADDR[AW-1:2]), + .RDATA (HRDATA) + ); + assign HREADYOUT = 1'b1; + assign HRESP = 1'b0; + +endmodule diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/ahb_bootrom__mangled.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/ahb_bootrom__mangled.v new file mode 100644 index 0000000000000000000000000000000000000000..9a4aedaa14fba2d338448ea0b52d93f845ec95f1 --- /dev/null +++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/ahb_bootrom__mangled.v @@ -0,0 +1,2381 @@ +// +// A joint work commissioned on behalf of SoC Labs. +// +// Contributors +// +// David Flynn (d.w.flynn@soton.ac.uk) +// +// Obfuscated RTL +// +// Copyright © 2021, SoC Labs (www.soclabs.org) +// + +/* + instances: 0 + nodes: 1136 (0) + node widths: 1220 (0) + process: 8 (0) + contassign: 1156 (0) + ports: 13 (0) +*/ + +/* Source file "tokens.v", line 14 */ +module ahb_bootrom__mangled(HCLK, HRESETn, HSEL, HADDR, HTRANS, HSIZE, HWRITE, + HWDATA, HREADY, HREADYOUT, HRDATA, HRESP); + + input [9:0] HADDR; + input [1:0] HTRANS; + input [2:0] HSIZE; + input [31:0] HWDATA; + output [31:0] HRDATA; + input HCLK; + input HRESETn; + input HSEL; + input HWRITE; + input HREADY; + output HREADYOUT; + output HRESP; + + wire Uqpfh7; + wire Zqpfh7; + wire Erpfh7; + wire Jrpfh7; + wire Orpfh7; + wire Trpfh7; + wire Yrpfh7; + wire Dspfh7; + wire Ispfh7; + wire Ospfh7; + wire Uspfh7; + wire Atpfh7; + wire Gtpfh7; + wire Mtpfh7; + wire Stpfh7; + wire Ytpfh7; + wire Eupfh7; + wire Kupfh7; + wire Qupfh7; + wire Wupfh7; + wire Cvpfh7; + wire Ivpfh7; + wire Ovpfh7; + wire Uvpfh7; + wire Awpfh7; + wire Gwpfh7; + wire Mwpfh7; + wire Swpfh7; + wire Ywpfh7; + wire Expfh7; + wire Kxpfh7; + wire Qxpfh7; + wire Wxpfh7; + wire Cypfh7; + wire Iypfh7; + wire Oypfh7; + wire Uypfh7; + wire Azpfh7; + wire Gzpfh7; + wire Mzpfh7; + wire Szpfh7; + wire Yzpfh7; + wire E0qfh7; + wire K0qfh7; + wire Q0qfh7; + wire W0qfh7; + wire C1qfh7; + wire I1qfh7; + wire O1qfh7; + wire U1qfh7; + wire A2qfh7; + wire G2qfh7; + wire M2qfh7; + wire S2qfh7; + wire Y2qfh7; + wire E3qfh7; + wire K3qfh7; + wire Q3qfh7; + wire W3qfh7; + wire C4qfh7; + wire I4qfh7; + wire O4qfh7; + wire U4qfh7; + wire A5qfh7; + wire G5qfh7; + wire M5qfh7; + wire S5qfh7; + wire Y5qfh7; + wire E6qfh7; + wire K6qfh7; + wire Q6qfh7; + wire W6qfh7; + wire C7qfh7; + wire I7qfh7; + wire O7qfh7; + wire U7qfh7; + wire A8qfh7; + wire G8qfh7; + wire M8qfh7; + wire S8qfh7; + wire Y8qfh7; + wire E9qfh7; + wire K9qfh7; + wire Q9qfh7; + wire W9qfh7; + wire Caqfh7; + wire Iaqfh7; + wire Oaqfh7; + wire Uaqfh7; + wire Abqfh7; + wire Gbqfh7; + wire Mbqfh7; + wire Sbqfh7; + wire Ybqfh7; + wire Ecqfh7; + wire Kcqfh7; + wire Qcqfh7; + wire Wcqfh7; + wire Cdqfh7; + wire Idqfh7; + wire Odqfh7; + wire Udqfh7; + wire Aeqfh7; + wire Geqfh7; + wire Meqfh7; + wire Seqfh7; + wire Yeqfh7; + wire Efqfh7; + wire Kfqfh7; + wire Qfqfh7; + wire Wfqfh7; + wire Cgqfh7; + wire Igqfh7; + wire Ogqfh7; + wire Ugqfh7; + wire Ahqfh7; + wire Ghqfh7; + wire Mhqfh7; + wire Shqfh7; + wire Yhqfh7; + wire Eiqfh7; + wire Kiqfh7; + wire Qiqfh7; + wire Wiqfh7; + wire Cjqfh7; + wire Ijqfh7; + wire Ojqfh7; + wire Ujqfh7; + wire Akqfh7; + wire Gkqfh7; + wire Mkqfh7; + wire Skqfh7; + wire Ykqfh7; + wire Elqfh7; + wire Klqfh7; + wire Qlqfh7; + wire Wlqfh7; + wire Cmqfh7; + wire Imqfh7; + wire Omqfh7; + wire Umqfh7; + wire Anqfh7; + wire Gnqfh7; + wire Mnqfh7; + wire Snqfh7; + wire Ynqfh7; + wire Eoqfh7; + wire Koqfh7; + wire Qoqfh7; + wire Woqfh7; + wire Cpqfh7; + wire Ipqfh7; + wire Opqfh7; + wire Upqfh7; + wire Aqqfh7; + wire Gqqfh7; + wire Mqqfh7; + wire Sqqfh7; + wire Yqqfh7; + wire Erqfh7; + wire Krqfh7; + wire Qrqfh7; + wire Wrqfh7; + wire Csqfh7; + wire Isqfh7; + wire Osqfh7; + wire Usqfh7; + wire Atqfh7; + wire Gtqfh7; + wire Mtqfh7; + wire Stqfh7; + wire Ytqfh7; + wire Euqfh7; + wire Kuqfh7; + wire Quqfh7; + wire Wuqfh7; + wire Cvqfh7; + wire Ivqfh7; + wire Ovqfh7; + wire Uvqfh7; + wire Awqfh7; + wire Gwqfh7; + wire Mwqfh7; + wire Swqfh7; + wire Ywqfh7; + wire Exqfh7; + wire Kxqfh7; + wire Qxqfh7; + wire Wxqfh7; + wire Cyqfh7; + wire Iyqfh7; + wire Oyqfh7; + wire Uyqfh7; + wire Azqfh7; + wire Gzqfh7; + wire Mzqfh7; + wire Szqfh7; + wire Yzqfh7; + wire E0rfh7; + wire K0rfh7; + wire Q0rfh7; + wire W0rfh7; + wire C1rfh7; + wire I1rfh7; + wire O1rfh7; + wire U1rfh7; + wire A2rfh7; + wire G2rfh7; + wire M2rfh7; + wire S2rfh7; + wire Y2rfh7; + wire E3rfh7; + wire K3rfh7; + wire Q3rfh7; + wire W3rfh7; + wire C4rfh7; + wire I4rfh7; + wire O4rfh7; + wire U4rfh7; + wire A5rfh7; + wire G5rfh7; + wire M5rfh7; + wire S5rfh7; + wire Y5rfh7; + wire E6rfh7; + wire K6rfh7; + wire Q6rfh7; + wire W6rfh7; + wire C7rfh7; + wire I7rfh7; + wire O7rfh7; + wire U7rfh7; + wire A8rfh7; + wire G8rfh7; + wire M8rfh7; + wire S8rfh7; + wire Y8rfh7; + wire E9rfh7; + wire K9rfh7; + wire Q9rfh7; + wire W9rfh7; + wire Carfh7; + wire Iarfh7; + wire Oarfh7; + wire Uarfh7; + wire Abrfh7; + wire Gbrfh7; + wire Mbrfh7; + wire Sbrfh7; + wire Ybrfh7; + wire Ecrfh7; + wire Kcrfh7; + wire Qcrfh7; + wire Wcrfh7; + wire Cdrfh7; + wire Idrfh7; + wire Odrfh7; + wire Udrfh7; + wire Aerfh7; + wire Gerfh7; + wire Merfh7; + wire Serfh7; + wire Yerfh7; + wire Efrfh7; + wire Kfrfh7; + wire Qfrfh7; + wire Wfrfh7; + wire Cgrfh7; + wire Igrfh7; + wire Ogrfh7; + wire Ugrfh7; + wire Ahrfh7; + wire Ghrfh7; + wire Mhrfh7; + wire Shrfh7; + wire Yhrfh7; + wire Eirfh7; + wire Kirfh7; + wire Qirfh7; + wire Wirfh7; + wire Cjrfh7; + wire Ijrfh7; + wire Ojrfh7; + wire Ujrfh7; + wire Akrfh7; + wire Gkrfh7; + wire Mkrfh7; + wire Skrfh7; + wire Ykrfh7; + wire Elrfh7; + wire Klrfh7; + wire Qlrfh7; + wire Wlrfh7; + wire Cmrfh7; + wire Imrfh7; + wire Omrfh7; + wire Umrfh7; + wire Anrfh7; + wire Gnrfh7; + wire Mnrfh7; + wire Snrfh7; + wire Ynrfh7; + wire Eorfh7; + wire Korfh7; + wire Qorfh7; + wire Worfh7; + wire Cprfh7; + wire Iprfh7; + wire Oprfh7; + wire Uprfh7; + wire Aqrfh7; + wire Gqrfh7; + wire Mqrfh7; + wire Sqrfh7; + wire Yqrfh7; + wire Errfh7; + wire Krrfh7; + wire Qrrfh7; + wire Wrrfh7; + wire Csrfh7; + wire Isrfh7; + wire Osrfh7; + wire Usrfh7; + wire Atrfh7; + wire Gtrfh7; + wire Mtrfh7; + wire Strfh7; + wire Ytrfh7; + wire Eurfh7; + wire Kurfh7; + wire Qurfh7; + wire Wurfh7; + wire Cvrfh7; + wire Ivrfh7; + wire Ovrfh7; + wire Uvrfh7; + wire Awrfh7; + wire Gwrfh7; + wire Mwrfh7; + wire Swrfh7; + wire Ywrfh7; + wire Exrfh7; + wire Kxrfh7; + wire Qxrfh7; + wire Wxrfh7; + wire Cyrfh7; + wire Iyrfh7; + wire Oyrfh7; + wire Uyrfh7; + wire Azrfh7; + wire Gzrfh7; + wire Mzrfh7; + wire Szrfh7; + wire Yzrfh7; + wire E0sfh7; + wire K0sfh7; + wire Q0sfh7; + wire W0sfh7; + wire C1sfh7; + wire I1sfh7; + wire O1sfh7; + wire U1sfh7; + wire A2sfh7; + wire G2sfh7; + wire M2sfh7; + wire S2sfh7; + wire Y2sfh7; + wire E3sfh7; + wire K3sfh7; + wire Q3sfh7; + wire W3sfh7; + wire C4sfh7; + wire I4sfh7; + wire O4sfh7; + wire U4sfh7; + wire A5sfh7; + wire G5sfh7; + wire M5sfh7; + wire S5sfh7; + wire Y5sfh7; + wire E6sfh7; + wire K6sfh7; + wire Q6sfh7; + wire W6sfh7; + wire C7sfh7; + wire I7sfh7; + wire O7sfh7; + wire U7sfh7; + wire A8sfh7; + wire G8sfh7; + wire M8sfh7; + wire S8sfh7; + wire Y8sfh7; + wire E9sfh7; + wire K9sfh7; + wire Q9sfh7; + wire W9sfh7; + wire Casfh7; + wire Iasfh7; + wire Oasfh7; + wire Uasfh7; + wire Absfh7; + wire Gbsfh7; + wire Mbsfh7; + wire Sbsfh7; + wire Ybsfh7; + wire Ecsfh7; + wire Kcsfh7; + wire Qcsfh7; + wire Wcsfh7; + wire Cdsfh7; + wire Idsfh7; + wire Odsfh7; + wire Udsfh7; + wire Aesfh7; + wire Gesfh7; + wire Mesfh7; + wire Sesfh7; + wire Yesfh7; + wire Efsfh7; + wire Kfsfh7; + wire Qfsfh7; + wire Wfsfh7; + wire Cgsfh7; + wire Igsfh7; + wire Ogsfh7; + wire Ugsfh7; + wire Ahsfh7; + wire Ghsfh7; + wire Mhsfh7; + wire Shsfh7; + wire Yhsfh7; + wire Eisfh7; + wire Kisfh7; + wire Qisfh7; + wire Wisfh7; + wire Cjsfh7; + wire Ijsfh7; + wire Ojsfh7; + wire Ujsfh7; + wire Aksfh7; + wire Gksfh7; + wire Mksfh7; + wire Sksfh7; + wire Yksfh7; + wire Elsfh7; + wire Klsfh7; + wire Qlsfh7; + wire Wlsfh7; + wire Cmsfh7; + wire Imsfh7; + wire Omsfh7; + wire Umsfh7; + wire Ansfh7; + wire Gnsfh7; + wire Mnsfh7; + wire Snsfh7; + wire Ynsfh7; + wire Eosfh7; + wire Kosfh7; + wire Qosfh7; + wire Wosfh7; + wire Cpsfh7; + wire Ipsfh7; + wire Opsfh7; + wire Upsfh7; + wire Aqsfh7; + wire Gqsfh7; + wire Mqsfh7; + wire Sqsfh7; + wire Yqsfh7; + wire Ersfh7; + wire Krsfh7; + wire Qrsfh7; + wire Wrsfh7; + wire Cssfh7; + wire Issfh7; + wire Ossfh7; + wire Ussfh7; + wire Atsfh7; + wire Gtsfh7; + wire Mtsfh7; + wire Stsfh7; + wire Ytsfh7; + wire Eusfh7; + wire Kusfh7; + wire Qusfh7; + wire Wusfh7; + wire Cvsfh7; + wire Ivsfh7; + wire Ovsfh7; + wire Uvsfh7; + wire Awsfh7; + wire Gwsfh7; + wire Mwsfh7; + wire Swsfh7; + wire Ywsfh7; + wire Exsfh7; + wire Kxsfh7; + wire Qxsfh7; + wire Wxsfh7; + wire Cysfh7; + wire Iysfh7; + wire Oysfh7; + wire Uysfh7; + wire Azsfh7; + wire Gzsfh7; + wire Mzsfh7; + wire Szsfh7; + wire Yzsfh7; + wire E0tfh7; + wire K0tfh7; + wire Q0tfh7; + wire W0tfh7; + wire C1tfh7; + wire I1tfh7; + wire O1tfh7; + wire U1tfh7; + wire A2tfh7; + wire G2tfh7; + wire M2tfh7; + wire S2tfh7; + wire Y2tfh7; + wire E3tfh7; + wire K3tfh7; + wire Q3tfh7; + wire W3tfh7; + wire C4tfh7; + wire I4tfh7; + wire O4tfh7; + wire U4tfh7; + wire A5tfh7; + wire G5tfh7; + wire M5tfh7; + wire S5tfh7; + wire Y5tfh7; + wire E6tfh7; + wire K6tfh7; + wire Q6tfh7; + wire W6tfh7; + wire C7tfh7; + wire I7tfh7; + wire O7tfh7; + wire U7tfh7; + wire A8tfh7; + wire G8tfh7; + wire M8tfh7; + wire S8tfh7; + wire Y8tfh7; + wire E9tfh7; + wire K9tfh7; + wire Q9tfh7; + wire W9tfh7; + wire Catfh7; + wire Iatfh7; + wire Oatfh7; + wire Uatfh7; + wire Abtfh7; + wire Gbtfh7; + wire Mbtfh7; + wire Sbtfh7; + wire Ybtfh7; + wire Ectfh7; + wire Kctfh7; + wire Qctfh7; + wire Wctfh7; + wire Cdtfh7; + wire Idtfh7; + wire Odtfh7; + wire Udtfh7; + wire Aetfh7; + wire Getfh7; + wire Metfh7; + wire Setfh7; + wire Yetfh7; + wire Eftfh7; + wire Kftfh7; + wire Qftfh7; + wire Wftfh7; + wire Cgtfh7; + wire Igtfh7; + wire Ogtfh7; + wire Ugtfh7; + wire Ahtfh7; + wire Ghtfh7; + wire Mhtfh7; + wire Shtfh7; + wire Yhtfh7; + wire Eitfh7; + wire Kitfh7; + wire Qitfh7; + wire Witfh7; + wire Cjtfh7; + wire Ijtfh7; + wire Ojtfh7; + wire Ujtfh7; + wire Aktfh7; + wire Gktfh7; + wire Mktfh7; + wire Sktfh7; + wire Yktfh7; + wire Eltfh7; + wire Kltfh7; + wire Qltfh7; + wire Wltfh7; + wire Cmtfh7; + wire Imtfh7; + wire Omtfh7; + wire Umtfh7; + wire Antfh7; + wire Gntfh7; + wire Mntfh7; + wire Sntfh7; + wire Yntfh7; + wire Eotfh7; + wire Kotfh7; + wire Qotfh7; + wire Wotfh7; + wire Cptfh7; + wire Iptfh7; + wire Optfh7; + wire Uptfh7; + wire Aqtfh7; + wire Gqtfh7; + wire Mqtfh7; + wire Sqtfh7; + wire Yqtfh7; + wire Ertfh7; + wire Krtfh7; + wire Qrtfh7; + wire Wrtfh7; + wire Cstfh7; + wire Istfh7; + wire Ostfh7; + wire Ustfh7; + wire Attfh7; + wire Gttfh7; + wire Mttfh7; + wire Sttfh7; + wire Yttfh7; + wire Eutfh7; + wire Kutfh7; + wire Qutfh7; + wire Wutfh7; + wire Cvtfh7; + wire Ivtfh7; + wire Ovtfh7; + wire Uvtfh7; + wire Awtfh7; + wire Gwtfh7; + wire Mwtfh7; + wire Swtfh7; + wire Ywtfh7; + wire Extfh7; + wire Kxtfh7; + wire Qxtfh7; + wire Wxtfh7; + wire Cytfh7; + wire Iytfh7; + wire Oytfh7; + wire Uytfh7; + wire Aztfh7; + wire Gztfh7; + wire Mztfh7; + wire Sztfh7; + wire Yztfh7; + wire E0ufh7; + wire K0ufh7; + wire Q0ufh7; + wire W0ufh7; + wire C1ufh7; + wire I1ufh7; + wire O1ufh7; + wire U1ufh7; + wire A2ufh7; + wire G2ufh7; + wire M2ufh7; + wire S2ufh7; + wire Y2ufh7; + wire E3ufh7; + wire K3ufh7; + wire Q3ufh7; + wire W3ufh7; + wire C4ufh7; + wire I4ufh7; + wire O4ufh7; + wire U4ufh7; + wire A5ufh7; + wire G5ufh7; + wire M5ufh7; + wire S5ufh7; + wire Y5ufh7; + wire E6ufh7; + wire K6ufh7; + wire Q6ufh7; + wire W6ufh7; + wire C7ufh7; + wire I7ufh7; + wire O7ufh7; + wire U7ufh7; + wire A8ufh7; + wire G8ufh7; + wire M8ufh7; + wire S8ufh7; + wire Y8ufh7; + wire E9ufh7; + wire K9ufh7; + wire Q9ufh7; + wire W9ufh7; + wire Caufh7; + wire Iaufh7; + wire Oaufh7; + wire Uaufh7; + wire Abufh7; + wire Gbufh7; + wire Mbufh7; + wire Sbufh7; + wire Ybufh7; + wire Ecufh7; + wire Kcufh7; + wire Qcufh7; + wire Wcufh7; + wire Cdufh7; + wire Idufh7; + wire Odufh7; + wire Udufh7; + wire Aeufh7; + wire Geufh7; + wire Meufh7; + wire Seufh7; + wire Yeufh7; + wire Efufh7; + wire Kfufh7; + wire Qfufh7; + wire Wfufh7; + wire Cgufh7; + wire Igufh7; + wire Ogufh7; + wire Ugufh7; + wire Ahufh7; + wire Ghufh7; + wire Mhufh7; + wire Shufh7; + wire Yhufh7; + wire Eiufh7; + wire Kiufh7; + wire Qiufh7; + wire Wiufh7; + wire Cjufh7; + wire Ijufh7; + wire Ojufh7; + wire Ujufh7; + wire Akufh7; + wire Gkufh7; + wire Mkufh7; + wire Skufh7; + wire Ykufh7; + wire Elufh7; + wire Klufh7; + wire Qlufh7; + wire Wlufh7; + wire Cmufh7; + wire Imufh7; + wire Omufh7; + wire Umufh7; + wire Anufh7; + wire Gnufh7; + wire Mnufh7; + wire Snufh7; + wire Ynufh7; + wire Eoufh7; + wire Koufh7; + wire Qoufh7; + wire Woufh7; + wire Cpufh7; + wire Ipufh7; + wire Opufh7; + wire Upufh7; + wire Aqufh7; + wire Gqufh7; + wire Mqufh7; + wire Squfh7; + wire Yqufh7; + wire Erufh7; + wire Krufh7; + wire Qrufh7; + wire Wrufh7; + wire Csufh7; + wire Isufh7; + wire Osufh7; + wire Usufh7; + wire Atufh7; + wire Gtufh7; + wire Mtufh7; + wire Stufh7; + wire Ytufh7; + wire Euufh7; + wire Kuufh7; + wire Quufh7; + wire Wuufh7; + wire Cvufh7; + wire Ivufh7; + wire Ovufh7; + wire Uvufh7; + wire Awufh7; + wire Gwufh7; + wire Mwufh7; + wire Swufh7; + wire Ywufh7; + wire Exufh7; + wire Kxufh7; + wire Qxufh7; + wire Wxufh7; + wire Cyufh7; + wire Iyufh7; + wire Oyufh7; + wire Uyufh7; + wire Azufh7; + wire Gzufh7; + wire Mzufh7; + wire Szufh7; + wire Yzufh7; + wire E0vfh7; + wire K0vfh7; + wire Q0vfh7; + wire W0vfh7; + wire C1vfh7; + wire I1vfh7; + wire O1vfh7; + wire U1vfh7; + wire A2vfh7; + wire G2vfh7; + wire M2vfh7; + wire S2vfh7; + wire Y2vfh7; + wire E3vfh7; + wire K3vfh7; + wire Q3vfh7; + wire W3vfh7; + wire C4vfh7; + wire I4vfh7; + wire O4vfh7; + wire U4vfh7; + wire A5vfh7; + wire G5vfh7; + wire M5vfh7; + wire S5vfh7; + wire Y5vfh7; + wire E6vfh7; + wire K6vfh7; + wire Q6vfh7; + wire W6vfh7; + wire C7vfh7; + wire I7vfh7; + wire O7vfh7; + wire U7vfh7; + wire A8vfh7; + wire G8vfh7; + wire M8vfh7; + wire S8vfh7; + wire Y8vfh7; + wire E9vfh7; + wire K9vfh7; + wire Q9vfh7; + wire W9vfh7; + wire Cavfh7; + wire Iavfh7; + wire Oavfh7; + wire Uavfh7; + wire Abvfh7; + wire Gbvfh7; + wire Mbvfh7; + wire Sbvfh7; + wire Ybvfh7; + wire Ecvfh7; + wire Kcvfh7; + wire Qcvfh7; + wire Wcvfh7; + wire Cdvfh7; + wire Idvfh7; + wire Odvfh7; + wire Udvfh7; + wire Aevfh7; + wire Gevfh7; + wire Mevfh7; + wire Sevfh7; + wire Yevfh7; + wire Efvfh7; + wire Kfvfh7; + wire Qfvfh7; + wire Wfvfh7; + wire Cgvfh7; + wire Igvfh7; + wire Ogvfh7; + wire Ugvfh7; + wire Ahvfh7; + wire Ghvfh7; + wire Mhvfh7; + wire Shvfh7; + wire Yhvfh7; + wire Eivfh7; + wire Kivfh7; + wire Qivfh7; + wire Wivfh7; + wire Cjvfh7; + wire Ijvfh7; + wire Ojvfh7; + wire Ujvfh7; + wire Akvfh7; + wire Gkvfh7; + wire Mkvfh7; + wire Skvfh7; + wire Ykvfh7; + wire Elvfh7; + wire Klvfh7; + wire Qlvfh7; + wire Wlvfh7; + wire Cmvfh7; + wire Imvfh7; + wire Omvfh7; + wire Umvfh7; + wire Anvfh7; + wire Gnvfh7; + wire Mnvfh7; + wire Snvfh7; + wire Ynvfh7; + wire Eovfh7; + wire Kovfh7; + wire Qovfh7; + wire Wovfh7; + wire Cpvfh7; + wire Ipvfh7; + wire Opvfh7; + wire Upvfh7; + wire Aqvfh7; + wire Gqvfh7; + wire Mqvfh7; + wire Sqvfh7; + wire Yqvfh7; + wire Ervfh7; + wire Krvfh7; + wire Qrvfh7; + wire Wrvfh7; + wire Csvfh7; + wire Isvfh7; + wire Osvfh7; + wire Usvfh7; + wire Atvfh7; + wire Gtvfh7; + wire Mtvfh7; + wire Stvfh7; + wire Ytvfh7; + wire Euvfh7; + wire Kuvfh7; + wire Quvfh7; + wire Wuvfh7; + wire Cvvfh7; + wire Ivvfh7; + wire Ovvfh7; + wire Uvvfh7; + wire Awvfh7; + wire Gwvfh7; + wire Mwvfh7; + wire Swvfh7; + wire Ywvfh7; + wire Exvfh7; + wire Kxvfh7; + wire Qxvfh7; + wire Wxvfh7; + wire Cyvfh7; + wire Iyvfh7; + wire Oyvfh7; + wire Uyvfh7; + wire Azvfh7; + wire Gzvfh7; + wire Mzvfh7; + wire Szvfh7; + wire Yzvfh7; + wire E0wfh7; + wire K0wfh7; + wire Q0wfh7; + wire W0wfh7; + wire C1wfh7; + wire I1wfh7; + wire O1wfh7; + wire U1wfh7; + wire A2wfh7; + wire G2wfh7; + wire M2wfh7; + wire S2wfh7; + wire Y2wfh7; + wire E3wfh7; + wire K3wfh7; + wire Q3wfh7; + wire W3wfh7; + wire C4wfh7; + wire I4wfh7; + wire O4wfh7; + wire U4wfh7; + wire A5wfh7; + wire G5wfh7; + wire M5wfh7; + wire S5wfh7; + wire Y5wfh7; + wire E6wfh7; + wire K6wfh7; + wire Q6wfh7; + wire W6wfh7; + wire C7wfh7; + wire I7wfh7; + wire O7wfh7; + wire U7wfh7; + wire A8wfh7; + wire G8wfh7; + wire M8wfh7; + wire S8wfh7; + wire Y8wfh7; + wire E9wfh7; + wire K9wfh7; + wire Q9wfh7; + wire W9wfh7; + wire Cawfh7; + wire Iawfh7; + wire Oawfh7; + wire Uawfh7; + wire Abwfh7; + wire Gbwfh7; + wire Mbwfh7; + wire Sbwfh7; + wire Ybwfh7; + wire Ecwfh7; + wire Kcwfh7; + wire Qcwfh7; + wire Wcwfh7; + wire Cdwfh7; + wire Idwfh7; + wire Odwfh7; + wire Udwfh7; + wire Aewfh7; + wire Gewfh7; + wire Mewfh7; + wire Sewfh7; + wire Yewfh7; + wire Efwfh7; + wire Kfwfh7; + wire Qfwfh7; + wire Wfwfh7; + wire Cgwfh7; + wire Igwfh7; + wire Ogwfh7; + wire Ugwfh7; + wire Ahwfh7; + wire Ghwfh7; + wire Mhwfh7; + wire Shwfh7; + wire Yhwfh7; + wire Eiwfh7; + wire Kiwfh7; + wire Qiwfh7; + wire Wiwfh7; + wire Cjwfh7; + wire Ijwfh7; + wire Ojwfh7; + wire Ujwfh7; + wire Akwfh7; + wire Gkwfh7; + wire Mkwfh7; + wire Skwfh7; + wire Ykwfh7; + wire Elwfh7; + wire Klwfh7; + wire Qlwfh7; + wire Wlwfh7; + wire Cmwfh7; + wire Imwfh7; + wire Omwfh7; + wire Umwfh7; + wire Anwfh7; + wire Gnwfh7; + wire Mnwfh7; + wire Snwfh7; + wire Ynwfh7; + wire Eowfh7; + wire Kowfh7; + wire Qowfh7; + wire Wowfh7; + wire Cpwfh7; + wire Ipwfh7; + wire Opwfh7; + wire Upwfh7; + wire Aqwfh7; + wire Gqwfh7; + wire Mqwfh7; + wire Sqwfh7; + wire Yqwfh7; + wire Erwfh7; + wire Krwfh7; + wire Qrwfh7; + wire Wrwfh7; + wire Cswfh7; + wire Iswfh7; + wire Oswfh7; + wire Uswfh7; + wire Atwfh7; + wire Gtwfh7; + wire Mtwfh7; + wire Stwfh7; + wire Ytwfh7; + wire Euwfh7; + wire Kuwfh7; + wire Quwfh7; + wire Wuwfh7; + wire Cvwfh7; + wire Ivwfh7; + wire [9:2] Ovwfh7; + reg Fwwfh7; + reg Dxwfh7; + reg Bywfh7; + reg Zywfh7; + reg Xzwfh7; + reg V0xfh7; + reg T1xfh7; + reg R2xfh7; + + assign HREADYOUT = 1'b1; + assign HRESP = 1'b0; + assign Ovwfh7[2] = Fwwfh7; + assign Ovwfh7[3] = Dxwfh7; + assign Ovwfh7[4] = Bywfh7; + assign Ovwfh7[5] = Zywfh7; + assign Ovwfh7[6] = Xzwfh7; + assign Ovwfh7[7] = V0xfh7; + assign Ovwfh7[8] = T1xfh7; + assign Ovwfh7[9] = R2xfh7; + assign Dspfh7 = (Ispfh7 ? HADDR[2] : Ovwfh7[2]); + assign Yrpfh7 = (Ispfh7 ? HADDR[3] : Ovwfh7[3]); + assign Trpfh7 = (Ispfh7 ? HADDR[4] : Ovwfh7[4]); + assign Orpfh7 = (Ispfh7 ? HADDR[5] : Ovwfh7[5]); + assign Jrpfh7 = (Ispfh7 ? HADDR[6] : Ovwfh7[6]); + assign Erpfh7 = (Ispfh7 ? HADDR[7] : Ovwfh7[7]); + assign Ispfh7 = (!Ospfh7); + assign Zqpfh7 = (Ospfh7 ? Ovwfh7[8] : HADDR[8]); + assign Uqpfh7 = (Ospfh7 ? Ovwfh7[9] : HADDR[9]); + assign Ospfh7 = (~(Uspfh7 & Atpfh7)); + assign Atpfh7 = (HREADY & Gtpfh7); + assign Gtpfh7 = (!HWRITE); + assign Uspfh7 = (HTRANS[1] & HSEL); + assign HRDATA[9] = (~(Mtpfh7 & Stpfh7)); + assign Stpfh7 = (Ytpfh7 & Eupfh7); + assign Eupfh7 = (Kupfh7 & Qupfh7); + assign Kupfh7 = (Wupfh7 & Cvpfh7); + assign Ytpfh7 = (Ivpfh7 & Ovpfh7); + assign Ivpfh7 = (Uvpfh7 & Awpfh7); + assign Mtpfh7 = (Gwpfh7 & Mwpfh7); + assign Mwpfh7 = (Swpfh7 & Ywpfh7); + assign Swpfh7 = (Expfh7 & Kxpfh7); + assign Gwpfh7 = (Qxpfh7 & Wxpfh7); + assign Qxpfh7 = (Cypfh7 & Iypfh7); + assign HRDATA[8] = (~(Oypfh7 & Uypfh7)); + assign Uypfh7 = (Azpfh7 & Gzpfh7); + assign Gzpfh7 = (Mzpfh7 & Szpfh7); + assign Szpfh7 = (Yzpfh7 & E0qfh7); + assign Yzpfh7 = (K0qfh7 & Q0qfh7); + assign Mzpfh7 = (W0qfh7 & C1qfh7); + assign Azpfh7 = (I1qfh7 & O1qfh7); + assign I1qfh7 = (U1qfh7 & A2qfh7); + assign U1qfh7 = (~(G2qfh7 & M2qfh7)); + assign Oypfh7 = (S2qfh7 & Y2qfh7); + assign Y2qfh7 = (E3qfh7 & K3qfh7); + assign K3qfh7 = (Q3qfh7 & W3qfh7); + assign E3qfh7 = (C4qfh7 & Expfh7); + assign Expfh7 = (I4qfh7 & O4qfh7); + assign O4qfh7 = (U4qfh7 & A5qfh7); + assign U4qfh7 = (G5qfh7 & M5qfh7); + assign I4qfh7 = (S5qfh7 & Y5qfh7); + assign S5qfh7 = (E6qfh7 & K6qfh7); + assign S2qfh7 = (Q6qfh7 & W6qfh7); + assign W6qfh7 = (C7qfh7 & I7qfh7); + assign Q6qfh7 = (O7qfh7 & U7qfh7); + assign HRDATA[7] = (~(A8qfh7 & G8qfh7)); + assign G8qfh7 = (M8qfh7 & S8qfh7); + assign S8qfh7 = (Y8qfh7 & E9qfh7); + assign Y8qfh7 = (K9qfh7 & Q9qfh7); + assign M8qfh7 = (Iypfh7 & W9qfh7); + assign A8qfh7 = (Caqfh7 & Iaqfh7); + assign Iaqfh7 = (Oaqfh7 & Uaqfh7); + assign Caqfh7 = (Abqfh7 & Gbqfh7); + assign HRDATA[6] = (~(Mbqfh7 & Sbqfh7)); + assign Sbqfh7 = (Ybqfh7 & Ecqfh7); + assign Ecqfh7 = (Kcqfh7 & E6qfh7); + assign Kcqfh7 = (Qcqfh7 & Q0qfh7); + assign Ybqfh7 = (Wcqfh7 & Cdqfh7); + assign Mbqfh7 = (Idqfh7 & Odqfh7); + assign Odqfh7 = (Udqfh7 & Aeqfh7); + assign Udqfh7 = (Geqfh7 & Meqfh7); + assign Idqfh7 = (Seqfh7 & Yeqfh7); + assign HRDATA[5] = (~(Efqfh7 & Kfqfh7)); + assign Kfqfh7 = (Qfqfh7 & Wfqfh7); + assign Wfqfh7 = (Cgqfh7 & Igqfh7); + assign Cgqfh7 = (Ogqfh7 & Ugqfh7); + assign Qfqfh7 = (Ahqfh7 & Ghqfh7); + assign Ahqfh7 = (Mhqfh7 & Shqfh7); + assign Mhqfh7 = (~(Yhqfh7 & Eiqfh7)); + assign Efqfh7 = (Kiqfh7 & Qiqfh7); + assign Qiqfh7 = (Wiqfh7 & Aeqfh7); + assign Wiqfh7 = (Cjqfh7 & Ijqfh7); + assign Kiqfh7 = (Ojqfh7 & Ujqfh7); + assign Ojqfh7 = (Akqfh7 & Gkqfh7); + assign HRDATA[4] = (~(Mkqfh7 & Skqfh7)); + assign Skqfh7 = (Ykqfh7 & Elqfh7); + assign Elqfh7 = (Klqfh7 & Qlqfh7); + assign Qlqfh7 = (Wlqfh7 & M5qfh7); + assign Klqfh7 = (Q0qfh7 & Cmqfh7); + assign Ykqfh7 = (Imqfh7 & Omqfh7); + assign Imqfh7 = (K0qfh7 & Qcqfh7); + assign Mkqfh7 = (Umqfh7 & Anqfh7); + assign Anqfh7 = (Gnqfh7 & Iypfh7); + assign Gnqfh7 = (Mnqfh7 & Snqfh7); + assign Umqfh7 = (Ynqfh7 & Eoqfh7); + assign Ynqfh7 = (Akqfh7 & Koqfh7); + assign Akqfh7 = (Qoqfh7 & Woqfh7); + assign Woqfh7 = (Cpqfh7 & Ipqfh7); + assign Ipqfh7 = (G5qfh7 & Opqfh7); + assign Cpqfh7 = (Upqfh7 & Aqqfh7); + assign Qoqfh7 = (Gqqfh7 & Mqqfh7); + assign Mqqfh7 = (Uaqfh7 & Sqqfh7); + assign Gqqfh7 = (Geqfh7 & Yqqfh7); + assign Geqfh7 = (Erqfh7 & Krqfh7); + assign Krqfh7 = (Qrqfh7 & Wrqfh7); + assign Qrqfh7 = (Csqfh7 & Isqfh7); + assign Erqfh7 = (Osqfh7 & Usqfh7); + assign Osqfh7 = (Atqfh7 & Q3qfh7); + assign HRDATA[3] = (~(Gtqfh7 & Mtqfh7)); + assign Mtqfh7 = (Stqfh7 & Ytqfh7); + assign Ytqfh7 = (Euqfh7 & Kuqfh7); + assign Kuqfh7 = (Quqfh7 & Wuqfh7); + assign Euqfh7 = (Ugqfh7 & Awpfh7); + assign Stqfh7 = (Cvqfh7 & Ivqfh7); + assign Ivqfh7 = (Ovqfh7 & Upqfh7); + assign Ovqfh7 = (~(Uvqfh7 & Awqfh7)); + assign Cvqfh7 = (Aeqfh7 & Iypfh7); + assign Iypfh7 = (Gwqfh7 & Mwqfh7); + assign Mwqfh7 = (~(Eiqfh7 & Swqfh7)); + assign Gwqfh7 = (~(Ywqfh7 & Exqfh7)); + assign Aeqfh7 = (Kxqfh7 & Qxqfh7); + assign Qxqfh7 = (Wxqfh7 & Cyqfh7); + assign Cyqfh7 = (Iyqfh7 & Oyqfh7); + assign Wxqfh7 = (W0qfh7 & Uyqfh7); + assign Kxqfh7 = (Azqfh7 & Gzqfh7); + assign Gzqfh7 = (Mzqfh7 & Szqfh7); + assign Azqfh7 = (Koqfh7 & Yzqfh7); + assign Koqfh7 = (E0rfh7 & K0rfh7); + assign K0rfh7 = (Q0rfh7 & W0rfh7); + assign E0rfh7 = (Uvpfh7 & C1rfh7); + assign Uvpfh7 = (~(I1rfh7 & O1rfh7)); + assign Gtqfh7 = (U1rfh7 & A2rfh7); + assign A2rfh7 = (G2rfh7 & M2rfh7); + assign M2rfh7 = (~(S2rfh7 | Y2rfh7)); + assign G2rfh7 = (E3rfh7 & K3rfh7); + assign U1rfh7 = (Q3rfh7 & W3rfh7); + assign Q3rfh7 = (C4rfh7 & I4rfh7); + assign HRDATA[31] = (~(O4rfh7 & U4rfh7)); + assign U4rfh7 = (A5rfh7 & G5rfh7); + assign G5rfh7 = (A5qfh7 & M5rfh7); + assign A5rfh7 = (S5rfh7 & C1rfh7); + assign O4rfh7 = (Y5rfh7 & E6rfh7); + assign E6rfh7 = (K6rfh7 & Q6rfh7); + assign Y5rfh7 = (W6rfh7 & C7rfh7); + assign HRDATA[30] = (~(I7rfh7 & O7rfh7)); + assign O7rfh7 = (U7rfh7 & A8rfh7); + assign A8rfh7 = (G8rfh7 & M8rfh7); + assign G8rfh7 = (Usqfh7 & C1rfh7); + assign U7rfh7 = (S8rfh7 & Y8rfh7); + assign I7rfh7 = (E9rfh7 & K9rfh7); + assign K9rfh7 = (~(Q9rfh7 | W9rfh7)); + assign E9rfh7 = (Carfh7 & Iarfh7); + assign HRDATA[2] = (~(Oarfh7 & Uarfh7)); + assign Uarfh7 = (Abrfh7 & Gbrfh7); + assign Gbrfh7 = (Mbrfh7 & Sbrfh7); + assign Sbrfh7 = (Ybrfh7 & Uyqfh7); + assign Ybrfh7 = (~(Ecrfh7 | Kcrfh7)); + assign Mbrfh7 = (Qupfh7 & Qcqfh7); + assign Abrfh7 = (Qcrfh7 & Wcrfh7); + assign Wcrfh7 = (C1qfh7 & Cdrfh7); + assign Qcrfh7 = (Idrfh7 & Odrfh7); + assign Oarfh7 = (Udrfh7 & Aerfh7); + assign Aerfh7 = (Gerfh7 & Merfh7); + assign Merfh7 = (Serfh7 & Yerfh7); + assign Serfh7 = (~(Ywqfh7 & Eiqfh7)); + assign Gerfh7 = (Wrqfh7 & Efrfh7); + assign Efrfh7 = (~(Kfrfh7 & O1rfh7)); + assign Udrfh7 = (Qfrfh7 & Wfrfh7); + assign Wfrfh7 = (Ujqfh7 & O7qfh7); + assign Ujqfh7 = (Cgrfh7 & Igrfh7); + assign Igrfh7 = (Ogrfh7 & Ugrfh7); + assign Ugrfh7 = (Ahrfh7 & Ghrfh7); + assign Ahrfh7 = (Mhrfh7 & Wupfh7); + assign Ogrfh7 = (Shrfh7 & E6qfh7); + assign E6qfh7 = (~(Eiqfh7 & Yhrfh7)); + assign Shrfh7 = (~(Eirfh7 | Kirfh7)); + assign Cgrfh7 = (Qirfh7 & Wirfh7); + assign Wirfh7 = (Cjrfh7 & Ijrfh7); + assign Cjrfh7 = (Ojrfh7 & Ujrfh7); + assign Qirfh7 = (~(Akrfh7 | Gkrfh7)); + assign Qfrfh7 = (Mkrfh7 & I4rfh7); + assign I4rfh7 = (Skrfh7 & Ykrfh7); + assign Ykrfh7 = (Elrfh7 & Klrfh7); + assign Elrfh7 = (Qlrfh7 & Wlrfh7); + assign Skrfh7 = (Cmrfh7 & S5rfh7); + assign Cmrfh7 = (~(Imrfh7 & Uvqfh7)); + assign Imrfh7 = (Omrfh7 & Umrfh7); + assign HRDATA[29] = (~(Anrfh7 & Gnrfh7)); + assign Gnrfh7 = (Mnrfh7 & Snrfh7); + assign Snrfh7 = (Ynrfh7 & Eorfh7); + assign Eorfh7 = (Q9qfh7 & Korfh7); + assign Ynrfh7 = (Qorfh7 & K0qfh7); + assign Mnrfh7 = (Worfh7 & Cprfh7); + assign Cprfh7 = (~(Iprfh7 & Kfrfh7)); + assign Worfh7 = (Sqqfh7 & Oprfh7); + assign Anrfh7 = (Uprfh7 & Aqrfh7); + assign Aqrfh7 = (Gqrfh7 & Yzqfh7); + assign Yzqfh7 = (C7qfh7 & Mqrfh7); + assign Mqrfh7 = (~(Sqrfh7 & Iprfh7)); + assign C7qfh7 = (Kxpfh7 & Yqrfh7); + assign Yqrfh7 = (~(Errfh7 & Krrfh7)); + assign Kxpfh7 = (Qrrfh7 & Wrrfh7); + assign Wrrfh7 = (~(Sqrfh7 & O1rfh7)); + assign Qrrfh7 = (~(Uvqfh7 & Ywqfh7)); + assign Gqrfh7 = (Csrfh7 & Isrfh7); + assign Isrfh7 = (~(Osrfh7 & Usrfh7)); + assign Uprfh7 = (Atrfh7 & Gtrfh7); + assign Atrfh7 = (Mkrfh7 & Yeqfh7); + assign Mkrfh7 = (Mtrfh7 & Strfh7); + assign Strfh7 = (Ytrfh7 & Eurfh7); + assign Eurfh7 = (Kurfh7 & Qurfh7); + assign Qurfh7 = (Wurfh7 & Iyqfh7); + assign Kurfh7 = (W0qfh7 & Cvrfh7); + assign Ytrfh7 = (Ivrfh7 & Ovrfh7); + assign Mtrfh7 = (Uvrfh7 & Awrfh7); + assign Awrfh7 = (Gwrfh7 & Mwrfh7); + assign Mwrfh7 = (~(Eiqfh7 & Awqfh7)); + assign Gwrfh7 = (Swrfh7 & Ywrfh7); + assign Swrfh7 = (~(Exrfh7 & Kxrfh7)); + assign Uvrfh7 = (Qxrfh7 & Wxrfh7); + assign HRDATA[28] = (~(Cyrfh7 & Iyrfh7)); + assign Iyrfh7 = (Oyrfh7 & Cvpfh7); + assign Cyrfh7 = (Uyrfh7 & W6rfh7); + assign W6rfh7 = (Azrfh7 & Gzrfh7); + assign Gzrfh7 = (Mzrfh7 & Wurfh7); + assign Mzrfh7 = (Korfh7 & Szrfh7); + assign Azrfh7 = (Yzrfh7 & E0sfh7); + assign Yzrfh7 = (M8rfh7 & Csrfh7); + assign M8rfh7 = (K0sfh7 & Q0sfh7); + assign Q0sfh7 = (W0sfh7 & C1sfh7); + assign C1sfh7 = (Awpfh7 & Q0qfh7); + assign W0sfh7 = (I1sfh7 & Csqfh7); + assign K0sfh7 = (O1sfh7 & Yqqfh7); + assign O1sfh7 = (Cypfh7 & W3qfh7); + assign HRDATA[27] = (~(U1sfh7 & A2sfh7)); + assign A2sfh7 = (G2sfh7 & M2sfh7); + assign M2sfh7 = (S2sfh7 & Csqfh7); + assign S2sfh7 = (Ujrfh7 & Y2sfh7); + assign G2sfh7 = (E3sfh7 & Ijrfh7); + assign U1sfh7 = (K3sfh7 & Q3sfh7); + assign Q3sfh7 = (W3sfh7 & C4sfh7); + assign W3sfh7 = (~(I4sfh7 | O4sfh7)); + assign I4sfh7 = (!U4sfh7); + assign K3sfh7 = (Uyrfh7 & S8rfh7); + assign S8rfh7 = (~(A5sfh7 | G5sfh7)); + assign A5sfh7 = (~(S5rfh7 & M5sfh7)); + assign Uyrfh7 = (S5sfh7 & Y5sfh7); + assign Y5sfh7 = (E6sfh7 & K6sfh7); + assign E6sfh7 = (Q6sfh7 & W6sfh7); + assign S5sfh7 = (~(C7sfh7 | I7sfh7)); + assign HRDATA[26] = (~(O7sfh7 & U7sfh7)); + assign U7sfh7 = (A8sfh7 & G8sfh7); + assign G8sfh7 = (M8sfh7 & S8sfh7); + assign M8sfh7 = (K6qfh7 & Quqfh7); + assign A8sfh7 = (Y8sfh7 & E9sfh7); + assign Y8sfh7 = (Q6sfh7 & Szqfh7); + assign O7sfh7 = (K9sfh7 & Q9sfh7); + assign Q9sfh7 = (~(W9sfh7 | Casfh7)); + assign W9sfh7 = (~(Iasfh7 & Oasfh7)); + assign K9sfh7 = (Uasfh7 & Absfh7); + assign Uasfh7 = (~(Gbsfh7 | Mbsfh7)); + assign HRDATA[25] = (~(Sbsfh7 & Ybsfh7)); + assign Ybsfh7 = (Ecsfh7 & Kcsfh7); + assign Kcsfh7 = (Qcsfh7 & Oyrfh7); + assign Qcsfh7 = (K9qfh7 & S8sfh7); + assign Ecsfh7 = (Wcsfh7 & Cdsfh7); + assign Wcsfh7 = (Idsfh7 & Odsfh7); + assign Sbsfh7 = (Udsfh7 & Aesfh7); + assign Aesfh7 = (Gesfh7 & Iarfh7); + assign Iarfh7 = (Mesfh7 & Sesfh7); + assign Sesfh7 = (Yesfh7 & Qupfh7); + assign Yesfh7 = (Cvpfh7 & Efsfh7); + assign Mesfh7 = (~(Mbsfh7 | Casfh7)); + assign Gesfh7 = (Yeqfh7 & Kfsfh7); + assign Udsfh7 = (Qfsfh7 & Wfsfh7); + assign Qfsfh7 = (Cgsfh7 & Wxrfh7); + assign HRDATA[24] = (~(Igsfh7 & Ogsfh7)); + assign Ogsfh7 = (Ugsfh7 & Ahsfh7); + assign Ahsfh7 = (Ghsfh7 & Mhsfh7); + assign Mhsfh7 = (M5sfh7 & Cvpfh7); + assign Ghsfh7 = (G5qfh7 & Awpfh7); + assign Ugsfh7 = (Shsfh7 & Yhsfh7); + assign Yhsfh7 = (Eisfh7 & Oprfh7); + assign Shsfh7 = (Yerfh7 & Idrfh7); + assign Igsfh7 = (Kisfh7 & Qisfh7); + assign Qisfh7 = (Wisfh7 & Cjsfh7); + assign Cjsfh7 = (Ijsfh7 & A2qfh7); + assign A2qfh7 = (Ojsfh7 | Ujsfh7); + assign Wisfh7 = (Gbqfh7 & Aksfh7); + assign Gbqfh7 = (Gksfh7 & Mksfh7); + assign Gksfh7 = (M5qfh7 & Sksfh7); + assign M5qfh7 = (!Ecrfh7); + assign Ecrfh7 = (~(Yksfh7 | Elsfh7)); + assign Yksfh7 = (!Kfrfh7); + assign Kisfh7 = (Klsfh7 & Qlsfh7); + assign Qlsfh7 = (Cgsfh7 & Absfh7); + assign Absfh7 = (Wlsfh7 & Cmsfh7); + assign Cmsfh7 = (Imsfh7 & Omsfh7); + assign Omsfh7 = (Umsfh7 & Mzqfh7); + assign Umsfh7 = (Ogqfh7 & Korfh7); + assign Imsfh7 = (Q6rfh7 & Ijrfh7); + assign Wlsfh7 = (Ansfh7 & Gnsfh7); + assign Gnsfh7 = (Mnsfh7 & C7rfh7); + assign Mnsfh7 = (Yqqfh7 & K6rfh7); + assign Ansfh7 = (~(Snsfh7 | Ynsfh7)); + assign Cgsfh7 = (Eosfh7 & Kosfh7); + assign Kosfh7 = (Qosfh7 & Q0qfh7); + assign Eosfh7 = (Wosfh7 & U4sfh7); + assign Klsfh7 = (Cpsfh7 & Ipsfh7); + assign HRDATA[23] = (~(Opsfh7 & Upsfh7)); + assign Upsfh7 = (Aqsfh7 & Gqsfh7); + assign Gqsfh7 = (Mqsfh7 & Idsfh7); + assign Mqsfh7 = (Sqsfh7 & Klrfh7); + assign Aqsfh7 = (Yqsfh7 & Ersfh7); + assign Ersfh7 = (~(Krsfh7 & Usrfh7)); + assign Opsfh7 = (Qrsfh7 & Wrsfh7); + assign Wrsfh7 = (Gkqfh7 & Wcqfh7); + assign Wcqfh7 = (Cssfh7 & Issfh7); + assign Cssfh7 = (W3qfh7 & Mhrfh7); + assign Gkqfh7 = (Ossfh7 & Ussfh7); + assign Ussfh7 = (Q9qfh7 & Atsfh7); + assign Ossfh7 = (Eisfh7 & Gtsfh7); + assign Qrsfh7 = (Mtsfh7 & K3rfh7); + assign K3rfh7 = (Stsfh7 & Ytsfh7); + assign Stsfh7 = (Ojrfh7 & Csqfh7); + assign HRDATA[22] = (~(Eusfh7 & Kusfh7)); + assign Kusfh7 = (Qusfh7 & Wusfh7); + assign Wusfh7 = (Cvsfh7 & Ivsfh7); + assign Cvsfh7 = (Quqfh7 & Iyqfh7); + assign Qusfh7 = (Q6sfh7 & Ovsfh7); + assign Eusfh7 = (Uvsfh7 & Awsfh7); + assign Awsfh7 = (Gwsfh7 & Wfsfh7); + assign Wfsfh7 = (Mwsfh7 & Swsfh7); + assign Swsfh7 = (Ywsfh7 & Mzqfh7); + assign Ywsfh7 = (Ujrfh7 & W6sfh7); + assign Mwsfh7 = (K6rfh7 & Ijrfh7); + assign Gwsfh7 = (Issfh7 & Ovrfh7); + assign Issfh7 = (Exsfh7 & Kxsfh7); + assign Kxsfh7 = (E9qfh7 & Qxsfh7); + assign Exsfh7 = (Kfsfh7 & C7rfh7); + assign Uvsfh7 = (Wxsfh7 & Cpsfh7); + assign HRDATA[21] = (~(Cysfh7 & Iysfh7)); + assign Iysfh7 = (Oysfh7 & Uysfh7); + assign Uysfh7 = (Azsfh7 & Gzsfh7); + assign Gzsfh7 = (Mzsfh7 & Quqfh7); + assign Mzsfh7 = (Mhrfh7 & M5rfh7); + assign Azsfh7 = (Qupfh7 & Atsfh7); + assign Oysfh7 = (Szsfh7 & Yzsfh7); + assign Yzsfh7 = (E0tfh7 & K0tfh7); + assign Szsfh7 = (Oprfh7 & Shqfh7); + assign Cysfh7 = (Q0tfh7 & W0tfh7); + assign W0tfh7 = (C1tfh7 & I1tfh7); + assign I1tfh7 = (Ijrfh7 & Ojrfh7); + assign Q0tfh7 = (O1tfh7 & U1tfh7); + assign U1tfh7 = (A2tfh7 & Sqsfh7); + assign A2tfh7 = (~(G2tfh7 & M2tfh7)); + assign O1tfh7 = (S2tfh7 & Iasfh7); + assign HRDATA[20] = (~(Y2tfh7 & E3tfh7)); + assign E3tfh7 = (K3tfh7 & Q3tfh7); + assign Q3tfh7 = (W3tfh7 & C4tfh7); + assign W3tfh7 = (Qcqfh7 & Korfh7); + assign K3tfh7 = (I4tfh7 & E9sfh7); + assign I4tfh7 = (Q6rfh7 & Qorfh7); + assign Y2tfh7 = (O4tfh7 & U4tfh7); + assign U4tfh7 = (A5tfh7 & Ipsfh7); + assign Ipsfh7 = (G5tfh7 & Snqfh7); + assign G5tfh7 = (Upqfh7 & Gtsfh7); + assign A5tfh7 = (~(Snsfh7 | M5tfh7)); + assign O4tfh7 = (S5tfh7 & Y5tfh7); + assign S5tfh7 = (E6tfh7 & S2tfh7); + assign S2tfh7 = (K6tfh7 & Q6tfh7); + assign Q6tfh7 = (W6tfh7 & C7tfh7); + assign C7tfh7 = (I7tfh7 & O7tfh7); + assign O7tfh7 = (U7tfh7 & W6sfh7); + assign I7tfh7 = (A8tfh7 & M5sfh7); + assign W6tfh7 = (G8tfh7 & M8tfh7); + assign M8tfh7 = (A5qfh7 & Ivsfh7); + assign G8tfh7 = (Csqfh7 & Q9qfh7); + assign K6tfh7 = (S8tfh7 & Y8tfh7); + assign Y8tfh7 = (E9tfh7 & K9tfh7); + assign K9tfh7 = (S5rfh7 & Klrfh7); + assign E9tfh7 = (~(Q9tfh7 | W9tfh7)); + assign S8tfh7 = (Catfh7 & Iatfh7); + assign Iatfh7 = (Yqsfh7 & Idsfh7); + assign Catfh7 = (Oatfh7 & Cpsfh7); + assign Cpsfh7 = (Uatfh7 & Abtfh7); + assign Abtfh7 = (Gbtfh7 & Mbtfh7); + assign Mbtfh7 = (C1rfh7 & Wlrfh7); + assign Gbtfh7 = (Sbtfh7 & Ybtfh7); + assign Uatfh7 = (Ectfh7 & Kctfh7); + assign Kctfh7 = (W3qfh7 & Qctfh7); + assign Ectfh7 = (Mtsfh7 & W3rfh7); + assign HRDATA[1] = (~(Wctfh7 & Cdtfh7)); + assign Cdtfh7 = (Idtfh7 & Odtfh7); + assign Odtfh7 = (Udtfh7 & Aetfh7); + assign Aetfh7 = (Getfh7 & Atsfh7); + assign Getfh7 = (Cmqfh7 & W6sfh7); + assign Udtfh7 = (Q0qfh7 & Uyqfh7); + assign Idtfh7 = (Metfh7 & Setfh7); + assign Setfh7 = (Yetfh7 & Isqfh7); + assign Yetfh7 = (E0qfh7 & G5qfh7); + assign Metfh7 = (Aqqfh7 & Mzqfh7); + assign Wctfh7 = (Eftfh7 & Kftfh7); + assign Kftfh7 = (Qftfh7 & Wftfh7); + assign Wftfh7 = (Cgtfh7 & Ovrfh7); + assign Cgtfh7 = (~(Akrfh7 | Igtfh7)); + assign Qftfh7 = (E9sfh7 & Ywrfh7); + assign Eftfh7 = (Ogtfh7 & Ugtfh7); + assign Ugtfh7 = (Ahtfh7 & C4rfh7); + assign C4rfh7 = (Ghtfh7 & Mhtfh7); + assign Mhtfh7 = (Shtfh7 & Yhtfh7); + assign Yhtfh7 = (Eitfh7 & Ghrfh7); + assign Eitfh7 = (~(Kitfh7 | Kcrfh7)); + assign Shtfh7 = (Qitfh7 & Snqfh7); + assign Qitfh7 = (~(Witfh7 | Cjtfh7)); + assign Ghtfh7 = (Ijtfh7 & Ojtfh7); + assign Ojtfh7 = (Ujtfh7 & Aktfh7); + assign Aktfh7 = (~(Uvqfh7 & Yhrfh7)); + assign Ujtfh7 = (Gktfh7 & Odsfh7); + assign Gktfh7 = (~(Sqrfh7 & Mktfh7)); + assign Ijtfh7 = (Sktfh7 & Yktfh7); + assign Sktfh7 = (K6rfh7 & Wrqfh7); + assign Ahtfh7 = (~(M5tfh7 | Eltfh7)); + assign Ogtfh7 = (Kltfh7 & Wxrfh7); + assign HRDATA[19] = (~(Qltfh7 & Wltfh7)); + assign Wltfh7 = (Cmtfh7 & Imtfh7); + assign Imtfh7 = (Omtfh7 & C1rfh7); + assign Omtfh7 = (Qorfh7 & Umtfh7); + assign Cmtfh7 = (Antfh7 & Gntfh7); + assign Gntfh7 = (~(Mntfh7 & Sntfh7)); + assign Sntfh7 = (~(Yntfh7 & Eotfh7)); + assign Antfh7 = (Kotfh7 & Eisfh7); + assign Qltfh7 = (Qotfh7 & Wotfh7); + assign Wotfh7 = (Cptfh7 & E6tfh7); + assign Cptfh7 = (Iptfh7 & I7qfh7); + assign Qotfh7 = (Optfh7 & Uptfh7); + assign HRDATA[18] = (~(Aqtfh7 & Gqtfh7)); + assign Gqtfh7 = (Mqtfh7 & Sqtfh7); + assign Sqtfh7 = (Yqtfh7 & Ertfh7); + assign Ertfh7 = (A8tfh7 & Iyqfh7); + assign Yqtfh7 = (Omqfh7 & C4tfh7); + assign Mqtfh7 = (C1tfh7 & Krtfh7); + assign Krtfh7 = (Klrfh7 & Oyrfh7); + assign C1tfh7 = (Qrtfh7 & K6sfh7); + assign Aqtfh7 = (Wrtfh7 & Cstfh7); + assign Cstfh7 = (Istfh7 & Ostfh7); + assign Ostfh7 = (Yerfh7 & Ustfh7); + assign Istfh7 = (Ovpfh7 & Attfh7); + assign Ovpfh7 = (Gttfh7 & K6rfh7); + assign Gttfh7 = (Ogqfh7 & Cdrfh7); + assign Wrtfh7 = (Mttfh7 & Sttfh7); + assign Mttfh7 = (Uptfh7 & Uaqfh7); + assign Uptfh7 = (Yttfh7 & Eutfh7); + assign Eutfh7 = (Kutfh7 & Ijrfh7); + assign Kutfh7 = (Qcqfh7 & Cvpfh7); + assign Yttfh7 = (W3qfh7 & Odrfh7); + assign Odrfh7 = (!Qutfh7); + assign HRDATA[17] = (~(Wutfh7 & Cvtfh7)); + assign Cvtfh7 = (Ivtfh7 & Ovtfh7); + assign Ovtfh7 = (Uvtfh7 & Awtfh7); + assign Awtfh7 = (Ivsfh7 & W6sfh7); + assign Uvtfh7 = (Szqfh7 & C1qfh7); + assign Ivtfh7 = (Gwtfh7 & Mwtfh7); + assign Mwtfh7 = (Ojrfh7 & Q0rfh7); + assign Gwtfh7 = (~(Swtfh7 | Akrfh7)); + assign Akrfh7 = (~(Ywtfh7 | Extfh7)); + assign Wutfh7 = (Kxtfh7 & Qxtfh7); + assign Qxtfh7 = (Wxtfh7 & Cytfh7); + assign Cytfh7 = (~(Iytfh7 | Oytfh7)); + assign Wxtfh7 = (Uytfh7 & Attfh7); + assign Kxtfh7 = (Aztfh7 & Gztfh7); + assign Gztfh7 = (Oatfh7 & Wosfh7); + assign Wosfh7 = (Mztfh7 & Cdrfh7); + assign Mztfh7 = (Sztfh7 & M5rfh7); + assign Aztfh7 = (Optfh7 & Y5tfh7); + assign Y5tfh7 = (Yztfh7 & E0ufh7); + assign E0ufh7 = (K0ufh7 & Mzqfh7); + assign K0ufh7 = (Ovsfh7 & Oyqfh7); + assign Optfh7 = (Q0ufh7 & W0ufh7); + assign W0ufh7 = (C1ufh7 & I1ufh7); + assign I1ufh7 = (O1ufh7 & Mhrfh7); + assign O1ufh7 = (Wupfh7 & U1ufh7); + assign C1ufh7 = (Csqfh7 & Atsfh7); + assign Q0ufh7 = (A2ufh7 & G2ufh7); + assign G2ufh7 = (M2ufh7 & K6rfh7); + assign M2ufh7 = (Csrfh7 & Igqfh7); + assign A2ufh7 = (~(C7sfh7 | S2ufh7)); + assign C7sfh7 = (~(Y2ufh7 & E3ufh7)); + assign E3ufh7 = (Idsfh7 & W0rfh7); + assign Y2ufh7 = (Y5qfh7 & E9sfh7); + assign HRDATA[16] = (~(K3ufh7 & Q3ufh7)); + assign Q3ufh7 = (W3ufh7 & C4ufh7); + assign C4ufh7 = (I4ufh7 & O4ufh7); + assign O4ufh7 = (Mhrfh7 & Umtfh7); + assign I4ufh7 = (Qosfh7 & Atsfh7); + assign W3ufh7 = (U4ufh7 & O1qfh7); + assign U4ufh7 = (~(O4sfh7 | A5ufh7)); + assign K3ufh7 = (G5ufh7 & M5ufh7); + assign M5ufh7 = (S5ufh7 & Y5ufh7); + assign Y5ufh7 = (E6ufh7 & K6ufh7); + assign S5ufh7 = (Abqfh7 & Q6ufh7); + assign G5ufh7 = (W6ufh7 & C7ufh7); + assign C7ufh7 = (Wxsfh7 & I7ufh7); + assign Wxsfh7 = (O7ufh7 & U7ufh7); + assign U7ufh7 = (A8ufh7 & G8ufh7); + assign G8ufh7 = (M8ufh7 & S8ufh7); + assign S8ufh7 = (A8tfh7 & Cvpfh7); + assign M8ufh7 = (Csqfh7 & Y2sfh7); + assign A8ufh7 = (Y8ufh7 & Sqsfh7); + assign Y8ufh7 = (Oyrfh7 & E9ufh7); + assign O7ufh7 = (K9ufh7 & Q9ufh7); + assign Q9ufh7 = (W9ufh7 & Caufh7); + assign W9ufh7 = (E9sfh7 & Idsfh7); + assign K9ufh7 = (~(Iaufh7 | Oaufh7)); + assign Iaufh7 = (~(Iasfh7 & Aksfh7)); + assign W6ufh7 = (Uaufh7 & Sttfh7); + assign Sttfh7 = (Abufh7 & Gbufh7); + assign Gbufh7 = (Mbufh7 & W0rfh7); + assign Mbufh7 = (Ghrfh7 & U1ufh7); + assign Abufh7 = (Sbufh7 & Mtsfh7); + assign Mtsfh7 = (Ybufh7 & Ecufh7); + assign Ecufh7 = (Igqfh7 & Kcufh7); + assign Ybufh7 = (Oasfh7 & Csrfh7); + assign Sbufh7 = (Qcufh7 & K9qfh7); + assign Qcufh7 = (~(Yhrfh7 & Mntfh7)); + assign HRDATA[15] = (~(Wcufh7 & Cdufh7)); + assign Cdufh7 = (Idufh7 & Odufh7); + assign Odufh7 = (Udufh7 & C1rfh7); + assign Udufh7 = (E0tfh7 & Csqfh7); + assign Idufh7 = (Aeufh7 & Cjqfh7); + assign Aeufh7 = (Y5qfh7 & Klrfh7); + assign Wcufh7 = (Geufh7 & Meufh7); + assign Meufh7 = (Seufh7 & E0sfh7); + assign Seufh7 = (Oaqfh7 & Yqqfh7); + assign Oaqfh7 = (Yeufh7 & C7rfh7); + assign Yeufh7 = (Usqfh7 & Mzqfh7); + assign Geufh7 = (Efufh7 & Kfufh7); + assign HRDATA[14] = (~(Qfufh7 & Wfufh7)); + assign Wfufh7 = (Cgufh7 & Igufh7); + assign Igufh7 = (Ogufh7 & U4sfh7); + assign Ogufh7 = (Ghrfh7 & Wurfh7); + assign Cgufh7 = (Ugufh7 & Abqfh7); + assign Abqfh7 = (Ahufh7 & Cjqfh7); + assign Ahufh7 = (Szqfh7 & Awpfh7); + assign Awpfh7 = (!Kirfh7); + assign Kirfh7 = (~(Ghufh7 | Mhufh7)); + assign Ugufh7 = (U7qfh7 & Idsfh7); + assign U7qfh7 = (Shufh7 & Yhufh7); + assign Yhufh7 = (Eiufh7 & Kiufh7); + assign Kiufh7 = (Qiufh7 & Wiufh7); + assign Wiufh7 = (Cjufh7 & Iyqfh7); + assign Cjufh7 = (Cvpfh7 & Wuqfh7); + assign Cvpfh7 = (!Kitfh7); + assign Kitfh7 = (~(Ijufh7 | Ojufh7)); + assign Eiufh7 = (Ujufh7 & Akufh7); + assign Akufh7 = (Qorfh7 & Gkufh7); + assign Ujufh7 = (Isqfh7 & Ujrfh7); + assign Shufh7 = (Mkufh7 & Skufh7); + assign Skufh7 = (Qxrfh7 & Ykufh7); + assign Ykufh7 = (Elufh7 & Atqfh7); + assign Elufh7 = (Wrqfh7 & Csqfh7); + assign Csqfh7 = (~(Klufh7 & Omrfh7)); + assign Qxrfh7 = (Uaqfh7 & Usqfh7); + assign Usqfh7 = (Qlufh7 & Wlufh7); + assign Wlufh7 = (Yqsfh7 & Szrfh7); + assign Qlufh7 = (Cmufh7 & Uytfh7); + assign Mkufh7 = (Imufh7 & Omufh7); + assign Omufh7 = (Oasfh7 & Yqqfh7); + assign Yqqfh7 = (~(Umufh7 | A5ufh7)); + assign A5ufh7 = (~(Ijufh7 | Anufh7)); + assign Umufh7 = (~(Gnufh7 | Mnufh7)); + assign Imufh7 = (Aksfh7 & C7rfh7); + assign Qfufh7 = (Snufh7 & Ynufh7); + assign Ynufh7 = (Eoufh7 & Wxrfh7); + assign Wxrfh7 = (!Gbsfh7); + assign Gbsfh7 = (~(Opqfh7 & W0rfh7)); + assign Eoufh7 = (~(G5sfh7 | Casfh7)); + assign Casfh7 = (~(Koufh7 & Qoufh7)); + assign Qoufh7 = (Woufh7 & Cpufh7); + assign Cpufh7 = (Ipufh7 & Ybtfh7); + assign Ipufh7 = (Shqfh7 & G5qfh7); + assign Woufh7 = (Opufh7 & Sbtfh7); + assign Opufh7 = (Idrfh7 & Klrfh7); + assign Koufh7 = (Upufh7 & Aqufh7); + assign Aqufh7 = (Gqufh7 & Q3qfh7); + assign Gqufh7 = (Caufh7 & Mqufh7); + assign Upufh7 = (Squfh7 & W3rfh7); + assign Squfh7 = (Ytsfh7 & Csrfh7); + assign G5sfh7 = (~(Yqufh7 & Erufh7)); + assign Erufh7 = (Krufh7 & Qrufh7); + assign Qrufh7 = (Cdrfh7 & A5qfh7); + assign Krufh7 = (Oprfh7 & K9qfh7); + assign Yqufh7 = (Wrufh7 & Csufh7); + assign Csufh7 = (~(Oaufh7 | Isufh7)); + assign Oaufh7 = (~(Osufh7 & Usufh7)); + assign Usufh7 = (Ogqfh7 & Cvrfh7); + assign Osufh7 = (Ywrfh7 & W0qfh7); + assign Wrufh7 = (~(Atufh7 | S2ufh7)); + assign S2ufh7 = (~(Gtufh7 & Mtufh7)); + assign Mtufh7 = (K0qfh7 & Sksfh7); + assign Gtufh7 = (Ovrfh7 & Ustfh7); + assign Snufh7 = (Stufh7 & Ytufh7); + assign HRDATA[13] = (~(Euufh7 & Kuufh7)); + assign Kuufh7 = (Quufh7 & Wuufh7); + assign Wuufh7 = (Cvufh7 & U7tfh7); + assign U7tfh7 = (Iyqfh7 & Sksfh7); + assign Cvufh7 = (Gkufh7 & Szrfh7); + assign Quufh7 = (Ivufh7 & Ovufh7); + assign Ovufh7 = (Ybtfh7 & K9qfh7); + assign Ivufh7 = (K6rfh7 & K6sfh7); + assign K6rfh7 = (Uvufh7 & Cjqfh7); + assign Uvufh7 = (Yqsfh7 & Q9qfh7); + assign Euufh7 = (Awufh7 & Gwufh7); + assign Gwufh7 = (Mwufh7 & Swufh7); + assign Swufh7 = (I7qfh7 & Cypfh7); + assign I7qfh7 = (Ywufh7 & Exufh7); + assign Exufh7 = (E9ufh7 & Y2sfh7); + assign Ywufh7 = (I1sfh7 & E0tfh7); + assign Mwufh7 = (W3rfh7 & Kfsfh7); + assign Kfsfh7 = (!Ynsfh7); + assign W3rfh7 = (Kxufh7 & Qxufh7); + assign Qxufh7 = (~(Wxufh7 & Usrfh7)); + assign Kxufh7 = (~(Sqrfh7 & Omrfh7)); + assign Awufh7 = (Cyufh7 & Iyufh7); + assign Iyufh7 = (Oatfh7 & Gtrfh7); + assign Gtrfh7 = (Oyufh7 & Uyufh7); + assign Uyufh7 = (Azufh7 & Gzufh7); + assign Gzufh7 = (Mzufh7 & S8sfh7); + assign Mzufh7 = (K6qfh7 & W6sfh7); + assign K6qfh7 = (~(Klufh7 & M2qfh7)); + assign Azufh7 = (Odsfh7 & Shqfh7); + assign Oyufh7 = (Szufh7 & Yzufh7); + assign Yzufh7 = (E0vfh7 & Aksfh7); + assign E0vfh7 = (U4sfh7 & Q6rfh7); + assign Q6rfh7 = (!I7sfh7); + assign I7sfh7 = (Omrfh7 & K0vfh7); + assign Szufh7 = (Carfh7 & E0sfh7); + assign E0sfh7 = (Q0vfh7 & W0vfh7); + assign W0vfh7 = (C1vfh7 & I1vfh7); + assign I1vfh7 = (O1vfh7 & Szqfh7); + assign O1vfh7 = (Igqfh7 & Quqfh7); + assign C1vfh7 = (U1vfh7 & Cdqfh7); + assign Q0vfh7 = (A2vfh7 & G2vfh7); + assign G2vfh7 = (Ytsfh7 & Ustfh7); + assign A2vfh7 = (~(Isufh7 | Snsfh7)); + assign Snsfh7 = (~(M2vfh7 & S2vfh7)); + assign S2vfh7 = (Y2vfh7 & U1ufh7); + assign M2vfh7 = (E3vfh7 & Uyqfh7); + assign Carfh7 = (K3vfh7 & Q3vfh7); + assign Q3vfh7 = (W3vfh7 & C4vfh7); + assign C4vfh7 = (O1qfh7 & Ijrfh7); + assign O1qfh7 = (Gtsfh7 & I4vfh7); + assign I4vfh7 = (O4vfh7 | U4vfh7); + assign Gtsfh7 = (O4vfh7 | Elsfh7); + assign W3vfh7 = (Eisfh7 & Oyrfh7); + assign Eisfh7 = (Gnufh7 | Extfh7); + assign K3vfh7 = (A5vfh7 & G5vfh7); + assign G5vfh7 = (M5vfh7 & Kotfh7); + assign Kotfh7 = (S5vfh7 | Y5vfh7); + assign M5vfh7 = (~(O4sfh7 | Qutfh7)); + assign O4sfh7 = (Klufh7 & E6vfh7); + assign A5vfh7 = (Iasfh7 & Y5qfh7); + assign Y5qfh7 = (!M5tfh7); + assign M5tfh7 = (~(K6vfh7 & Ugqfh7)); + assign Ugqfh7 = (~(Wxufh7 & Mntfh7)); + assign K6vfh7 = (~(Eirfh7 | Q6vfh7)); + assign Eirfh7 = (~(O4vfh7 | W6vfh7)); + assign Iasfh7 = (E3sfh7 & C7vfh7); + assign C7vfh7 = (Isqfh7 & Qlrfh7); + assign E3sfh7 = (Q0rfh7 & Aqqfh7); + assign Oatfh7 = (I7vfh7 & Ujrfh7); + assign I7vfh7 = (W0qfh7 & Efsfh7); + assign W0qfh7 = (O7vfh7 | U4vfh7); + assign Cyufh7 = (Ytufh7 & Kfufh7); + assign Kfufh7 = (U7vfh7 & A8vfh7); + assign A8vfh7 = (S5rfh7 & Omqfh7); + assign S5rfh7 = (~(G8vfh7 & M8vfh7)); + assign U7vfh7 = (Oasfh7 & S8vfh7); + assign Oasfh7 = (Y8vfh7 & E9vfh7); + assign E9vfh7 = (~(Eiqfh7 & K9vfh7)); + assign Eiqfh7 = (!Ojsfh7); + assign Ojsfh7 = (~(Q9vfh7 & Ovwfh7[9])); + assign Q9vfh7 = (Ovwfh7[8] & Ovwfh7[7]); + assign Y8vfh7 = (~(G8vfh7 & Usrfh7)); + assign Ytufh7 = (W9vfh7 & Cavfh7); + assign Cavfh7 = (Q6sfh7 & Wupfh7); + assign W9vfh7 = (Y8rfh7 & E9sfh7); + assign E9sfh7 = (Iavfh7 | Oavfh7); + assign Y8rfh7 = (K6ufh7 & Uavfh7); + assign Uavfh7 = (~(Abvfh7 & E6vfh7)); + assign HRDATA[12] = (~(Gbvfh7 & Mbvfh7)); + assign Mbvfh7 = (Sbvfh7 & Ybvfh7); + assign Ybvfh7 = (Ecvfh7 & Kcvfh7); + assign Kcvfh7 = (Szrfh7 & Wupfh7); + assign Ecvfh7 = (E9ufh7 & Ogqfh7); + assign Ogqfh7 = (W6vfh7 | Qcvfh7); + assign Sbvfh7 = (Wcvfh7 & Ustfh7); + assign Ustfh7 = (!Q9tfh7); + assign Q9tfh7 = (Wxufh7 & M8vfh7); + assign Wcvfh7 = (U1vfh7 & Oprfh7); + assign Gbvfh7 = (Cdvfh7 & Idvfh7); + assign Idvfh7 = (Odvfh7 & Udvfh7); + assign Udvfh7 = (Eoqfh7 & U4sfh7); + assign Eoqfh7 = (Aevfh7 & Gevfh7); + assign Gevfh7 = (Mevfh7 & Szqfh7); + assign Mevfh7 = (Sztfh7 & Qosfh7); + assign Aevfh7 = (C4sfh7 & Mzqfh7); + assign C4sfh7 = (Sevfh7 & Yevfh7); + assign Yevfh7 = (Efvfh7 & E3vfh7); + assign Efvfh7 = (E0tfh7 & Uyqfh7); + assign Sevfh7 = (Kfvfh7 & Yeqfh7); + assign Kfvfh7 = (O7qfh7 & Odsfh7); + assign O7qfh7 = (Qfvfh7 & Wfvfh7); + assign Wfvfh7 = (Quqfh7 & U1ufh7); + assign Qfvfh7 = (Cjqfh7 & Ytsfh7); + assign Odvfh7 = (~(Isufh7 | S2rfh7)); + assign S2rfh7 = (~(Cgvfh7 & Cmufh7)); + assign Cmufh7 = (Igvfh7 & E6ufh7); + assign E6ufh7 = (~(Kxrfh7 & G2qfh7)); + assign Igvfh7 = (~(Awqfh7 & Mntfh7)); + assign Cgvfh7 = (Uytfh7 & K6sfh7); + assign Uytfh7 = (Ogvfh7 & Ugvfh7); + assign Ugvfh7 = (~(Ahvfh7 & Ghvfh7)); + assign Ghvfh7 = (~(Mhvfh7 & Shvfh7)); + assign Ogvfh7 = (~(Krsfh7 & Mntfh7)); + assign Isufh7 = (~(Yhvfh7 & Eivfh7)); + assign Eivfh7 = (Sqsfh7 & Qrtfh7); + assign Qrtfh7 = (~(Yhqfh7 & Errfh7)); + assign Sqsfh7 = (!Oytfh7); + assign Oytfh7 = (~(Kivfh7 | Anufh7)); + assign Yhvfh7 = (~(Iytfh7 | W9tfh7)); + assign W9tfh7 = (~(Qivfh7 | Wivfh7)); + assign Iytfh7 = (Cjvfh7 & M8vfh7); + assign Cdvfh7 = (Ijvfh7 & Efufh7); + assign Efufh7 = (Ojvfh7 & Ujvfh7); + assign Ujvfh7 = (Akvfh7 & Gkvfh7); + assign Gkvfh7 = (Q9qfh7 & A5qfh7); + assign Akvfh7 = (Ovrfh7 & Gkufh7); + assign Ovrfh7 = (Ijufh7 | Mkvfh7); + assign Ojvfh7 = (Skvfh7 & Ykvfh7); + assign Ykvfh7 = (K6ufh7 & Ywrfh7); + assign Ywrfh7 = (~(K9vfh7 & Ahvfh7)); + assign K6ufh7 = (~(Abvfh7 & O1rfh7)); + assign Skvfh7 = (Uaqfh7 & Idsfh7); + assign Idsfh7 = (Elvfh7 | Qivfh7); + assign Ijvfh7 = (~(W9rfh7 | Mbsfh7)); + assign Mbsfh7 = (~(Klvfh7 & Qlvfh7)); + assign Qlvfh7 = (Omqfh7 & Mhrfh7); + assign Klvfh7 = (Ojrfh7 & Igqfh7); + assign W9rfh7 = (~(Cdqfh7 & Q6ufh7)); + assign Q6ufh7 = (~(Abvfh7 & Iprfh7)); + assign HRDATA[11] = (~(Wlvfh7 & Cmvfh7)); + assign Cmvfh7 = (Imvfh7 & Omvfh7); + assign Omvfh7 = (Umvfh7 & I1sfh7); + assign I1sfh7 = (~(G2qfh7 & Omrfh7)); + assign Umvfh7 = (E0tfh7 & W6sfh7); + assign Imvfh7 = (Anvfh7 & Sbtfh7); + assign Sbtfh7 = (~(Gnvfh7 & Errfh7)); + assign Anvfh7 = (K6sfh7 & E9qfh7); + assign E9qfh7 = (~(Errfh7 & Mnvfh7)); + assign K6sfh7 = (Snvfh7 | Mhufh7); + assign Wlvfh7 = (Ynvfh7 & Eovfh7); + assign Eovfh7 = (~(Kovfh7 | Atufh7)); + assign Atufh7 = (!I7ufh7); + assign I7ufh7 = (Qovfh7 & Wovfh7); + assign Wovfh7 = (C1qfh7 & E0qfh7); + assign E0qfh7 = (Cpvfh7 | Ojufh7); + assign C1qfh7 = (O7vfh7 | Ipvfh7); + assign O7vfh7 = (!Sqrfh7); + assign Qovfh7 = (Yerfh7 & Sqqfh7); + assign Sqqfh7 = (Ipvfh7 | Opvfh7); + assign Yerfh7 = (Elsfh7 | Upvfh7); + assign Kovfh7 = (~(Meqfh7 & Cypfh7)); + assign Cypfh7 = (Aqvfh7 & Gqvfh7); + assign Gqvfh7 = (Mqvfh7 & Kcufh7); + assign Kcufh7 = (~(M2qfh7 & Sqvfh7)); + assign Sqvfh7 = (~(Opvfh7 & S5vfh7)); + assign Mqvfh7 = (Qosfh7 & Umtfh7); + assign Umtfh7 = (S5vfh7 | Ipvfh7); + assign Qosfh7 = (~(Klufh7 & M2tfh7)); + assign Aqvfh7 = (Attfh7 & Sztfh7); + assign Sztfh7 = (Shvfh7 | Anufh7); + assign Attfh7 = (Yqvfh7 & Ervfh7); + assign Ervfh7 = (~(G8vfh7 & Mntfh7)); + assign Yqvfh7 = (Krvfh7 & Qrvfh7); + assign Qrvfh7 = (~(Wxufh7 & Ahvfh7)); + assign Krvfh7 = (~(G2tfh7 & O1rfh7)); + assign Meqfh7 = (Qiufh7 & E9ufh7); + assign Qiufh7 = (Qupfh7 & Qlrfh7); + assign Qupfh7 = (~(Wrvfh7 & Usrfh7)); + assign Ynvfh7 = (Csvfh7 & Stufh7); + assign Stufh7 = (Isvfh7 & Osvfh7); + assign Osvfh7 = (Usvfh7 & Atvfh7); + assign Atvfh7 = (Gtvfh7 & Mzqfh7); + assign Mzqfh7 = (Mtvfh7 | Anufh7); + assign Gtvfh7 = (Uyqfh7 & Quqfh7); + assign Usvfh7 = (C1rfh7 & Cdqfh7); + assign Cdqfh7 = (!Cjtfh7); + assign Cjtfh7 = (~(Stvfh7 | Anufh7)); + assign C1rfh7 = (~(Awqfh7 & Exqfh7)); + assign Isvfh7 = (Ytvfh7 & Euvfh7); + assign Euvfh7 = (Ivrfh7 & Odsfh7); + assign Odsfh7 = (~(Yhqfh7 & Ahvfh7)); + assign Ivrfh7 = (Snqfh7 & Upqfh7); + assign Upqfh7 = (~(Kuvfh7 & Kxrfh7)); + assign Snqfh7 = (W6vfh7 | Opvfh7); + assign Opvfh7 = (!G2qfh7); + assign Ytvfh7 = (~(Ynsfh7 | Qutfh7)); + assign Qutfh7 = (Wrvfh7 & Exqfh7); + assign Ynsfh7 = (~(Yztfh7 & Iptfh7)); + assign Yztfh7 = (~(Witfh7 | Igtfh7)); + assign Igtfh7 = (~(Ghufh7 | Mkvfh7)); + assign Witfh7 = (~(Shvfh7 | Mkvfh7)); + assign HRDATA[10] = (~(Quvfh7 & Wuvfh7)); + assign Wuvfh7 = (Cvvfh7 & Ivvfh7); + assign Ivvfh7 = (Ovvfh7 & E9ufh7); + assign E9ufh7 = (Kivfh7 | Uvvfh7); + assign Kivfh7 = (!Wxufh7); + assign Wxufh7 = (Awvfh7 & E6vfh7); + assign Ovvfh7 = (Isqfh7 & U1ufh7); + assign Isqfh7 = (Shvfh7 | Ojufh7); + assign Cvvfh7 = (Gwvfh7 & Ytsfh7); + assign Gwvfh7 = (Klrfh7 & Shqfh7); + assign Quvfh7 = (Mwvfh7 & Swvfh7); + assign Swvfh7 = (Ywvfh7 & C4qfh7); + assign C4qfh7 = (Exvfh7 & Kxvfh7); + assign Kxvfh7 = (Igqfh7 & Omqfh7); + assign Omqfh7 = (~(Osrfh7 & Errfh7)); + assign Igqfh7 = (Ywtfh7 | Mnufh7); + assign Exvfh7 = (S8sfh7 & E3vfh7); + assign E3vfh7 = (~(Cjvfh7 & Exqfh7)); + assign S8sfh7 = (~(Klufh7 & Mktfh7)); + assign Ywvfh7 = (Wxpfh7 & Yqsfh7); + assign Yqsfh7 = (Qxvfh7 & Wxvfh7); + assign Wxvfh7 = (~(Kxrfh7 & Cyvfh7)); + assign Qxvfh7 = (~(Usrfh7 & Iyvfh7)); + assign Iyvfh7 = (~(Ghufh7 & Oyvfh7)); + assign Wxpfh7 = (Uyvfh7 & Azvfh7); + assign Azvfh7 = (Gzvfh7 & Mzvfh7); + assign Mzvfh7 = (Szvfh7 & Yzvfh7); + assign Yzvfh7 = (Wuqfh7 & Efsfh7); + assign Wuqfh7 = (~(Klufh7 & O1rfh7)); + assign Gzvfh7 = (E0wfh7 & W0rfh7); + assign W0rfh7 = (Elsfh7 | Wivfh7); + assign E0wfh7 = (Q0qfh7 & Szrfh7); + assign Q0qfh7 = (Gnufh7 | U4vfh7); + assign Uyvfh7 = (K0wfh7 & Q0wfh7); + assign Q0wfh7 = (W0wfh7 & C1wfh7); + assign C1wfh7 = (Y2sfh7 & Qlrfh7); + assign Qlrfh7 = (U4vfh7 | Upvfh7); + assign Y2sfh7 = (Ywtfh7 | Y5vfh7); + assign W0wfh7 = (Q3qfh7 & Caufh7); + assign Caufh7 = (Qcqfh7 & Oyqfh7); + assign Qcqfh7 = (Oyvfh7 | Mhufh7); + assign Q3qfh7 = (Qctfh7 & A8tfh7); + assign A8tfh7 = (Mtvfh7 | Uvvfh7); + assign Qctfh7 = (~(Awqfh7 & Errfh7)); + assign K0wfh7 = (I1wfh7 & Atqfh7); + assign Atqfh7 = (O1wfh7 & U1wfh7); + assign U1wfh7 = (A2wfh7 & M5sfh7); + assign M5sfh7 = (~(Mntfh7 & G2wfh7)); + assign G2wfh7 = (~(Mtvfh7 & Yntfh7)); + assign A2wfh7 = (W6sfh7 & M2wfh7); + assign M2wfh7 = (~(Cyvfh7 & O1rfh7)); + assign W6sfh7 = (Qcvfh7 | Elsfh7); + assign O1wfh7 = (S2wfh7 & Y2wfh7); + assign Y2wfh7 = (~(Kxrfh7 & Kfrfh7)); + assign S2wfh7 = (E3wfh7 & Korfh7); + assign Korfh7 = (~(G2qfh7 & Mktfh7)); + assign E3wfh7 = (~(Mnvfh7 & Exqfh7)); + assign I1wfh7 = (Csrfh7 & W9qfh7); + assign W9qfh7 = (K3wfh7 & Q3wfh7); + assign Q3wfh7 = (W3wfh7 & C4wfh7); + assign C4wfh7 = (I4wfh7 & Quqfh7); + assign I4wfh7 = (Cvrfh7 & Wurfh7); + assign W3wfh7 = (Ghrfh7 & Uyqfh7); + assign Uyqfh7 = (Oyvfh7 | Uvvfh7); + assign Ghrfh7 = (~(K9vfh7 & Errfh7)); + assign K9vfh7 = (!Ijufh7); + assign K3wfh7 = (O4wfh7 & U4wfh7); + assign U4wfh7 = (Mqufh7 & Opqfh7); + assign Opqfh7 = (~(Kfrfh7 & M2qfh7)); + assign Mqufh7 = (A5wfh7 & Qxsfh7); + assign Qxsfh7 = (~(Krsfh7 & Errfh7)); + assign Krsfh7 = (!Stvfh7); + assign A5wfh7 = (Atsfh7 & Wlrfh7); + assign Atsfh7 = (Elvfh7 | Elsfh7); + assign O4wfh7 = (W3qfh7 & Wrqfh7); + assign Wrqfh7 = (S8vfh7 & Y2vfh7); + assign Y2vfh7 = (~(G2qfh7 & E6vfh7)); + assign S8vfh7 = (~(Abvfh7 & Kxrfh7)); + assign W3qfh7 = (G5wfh7 & Cmqfh7); + assign Cmqfh7 = (~(Wrvfh7 & Mntfh7)); + assign Csrfh7 = (Ghqfh7 & Wlqfh7); + assign Ghqfh7 = (~(M5wfh7 & Errfh7)); + assign Mwvfh7 = (~(Q9rfh7 | Y2rfh7)); + assign Q9rfh7 = (~(S5wfh7 & Y5wfh7)); + assign Y5wfh7 = (E0tfh7 & Q9qfh7); + assign E0tfh7 = (Cpvfh7 | Mkvfh7); + assign S5wfh7 = (C7rfh7 & U1vfh7); + assign C7rfh7 = (E6wfh7 & K6wfh7); + assign K6wfh7 = (~(Cjvfh7 & Errfh7)); + assign E6wfh7 = (~(Kfrfh7 & Q6wfh7)); + assign Q6wfh7 = (~(W6wfh7 & Y5vfh7)); + assign Kfrfh7 = (Errfh7 & C7wfh7); + assign HRDATA[0] = (~(I7wfh7 & O7wfh7)); + assign O7wfh7 = (U7wfh7 & A8wfh7); + assign A8wfh7 = (G8wfh7 & M8wfh7); + assign M8wfh7 = (Wlqfh7 & Oyqfh7); + assign Oyqfh7 = (S8wfh7 | Uvvfh7); + assign Wlqfh7 = (~(G8vfh7 & Exqfh7)); + assign G8wfh7 = (A5qfh7 & Wlrfh7); + assign Wlrfh7 = (Y8wfh7 | Uvvfh7); + assign A5qfh7 = (~(Yhqfh7 & Exqfh7)); + assign U7wfh7 = (E9wfh7 & Aksfh7); + assign Aksfh7 = (K9wfh7 & Q9wfh7); + assign Q9wfh7 = (~(Kuvfh7 & E6vfh7)); + assign K9wfh7 = (~(G2qfh7 & O1rfh7)); + assign G2qfh7 = (~(Mkvfh7 | W9wfh7)); + assign E9wfh7 = (Cjqfh7 & Q0rfh7); + assign Q0rfh7 = (Eotfh7 | Ojufh7); + assign Cjqfh7 = (Cawfh7 & Iawfh7); + assign Iawfh7 = (~(M2qfh7 & K0vfh7)); + assign Cawfh7 = (Oawfh7 & K0tfh7); + assign K0tfh7 = (~(Mktfh7 & K0vfh7)); + assign Oawfh7 = (O4vfh7 | W6wfh7); + assign I7wfh7 = (Uawfh7 & Abwfh7); + assign Abwfh7 = (Gbwfh7 & E3rfh7); + assign E3rfh7 = (Mbwfh7 & Sbwfh7); + assign Sbwfh7 = (Ybwfh7 & Ijrfh7); + assign Ijrfh7 = (Ipvfh7 | Upvfh7); + assign Ybwfh7 = (~(Q6vfh7 | Ecwfh7)); + assign Ecwfh7 = (!Cvrfh7); + assign Cvrfh7 = (~(Klufh7 & Iprfh7)); + assign Q6vfh7 = (~(Cpvfh7 | Oavfh7)); + assign Cpvfh7 = (!Cjvfh7); + assign Cjvfh7 = (Kxrfh7 & Awvfh7); + assign Mbwfh7 = (G5wfh7 & Oyrfh7); + assign Oyrfh7 = (!Gkrfh7); + assign Gkrfh7 = (~(Qivfh7 | Qcvfh7)); + assign G5wfh7 = (~(Wrvfh7 & Ahvfh7)); + assign Wrvfh7 = (!S8wfh7); + assign Gbwfh7 = (Yktfh7 & Seqfh7); + assign Seqfh7 = (Kcwfh7 & Qcwfh7); + assign Qcwfh7 = (Wcwfh7 & Cdwfh7); + assign Cdwfh7 = (Quqfh7 & Wupfh7); + assign Wupfh7 = (Mnufh7 | Upvfh7); + assign Quqfh7 = (Ywtfh7 | Ipvfh7); + assign Wcwfh7 = (Shqfh7 & Ujrfh7); + assign Ujrfh7 = (~(Yhrfh7 & Usrfh7)); + assign Shqfh7 = (~(Omrfh7 & Cyvfh7)); + assign Kcwfh7 = (Idwfh7 & Odwfh7); + assign Odwfh7 = (Aqqfh7 & Oprfh7); + assign Oprfh7 = (Qcvfh7 | Extfh7); + assign Qcvfh7 = (!K0vfh7); + assign Aqqfh7 = (Yntfh7 | Ojufh7); + assign Idwfh7 = (Mksfh7 & Uaqfh7); + assign Uaqfh7 = (Udwfh7 & Ijsfh7); + assign Ijsfh7 = (~(Aewfh7 & Mntfh7)); + assign Udwfh7 = (Cdsfh7 & M5rfh7); + assign M5rfh7 = (Mtvfh7 | Oavfh7); + assign Cdsfh7 = (~(M5wfh7 & Ahvfh7)); + assign Mksfh7 = (Ywpfh7 & Gewfh7); + assign Gewfh7 = (~(Sqrfh7 & E6vfh7)); + assign Ywpfh7 = (Mewfh7 & Mnqfh7); + assign Mnqfh7 = (~(Kcrfh7 | Sewfh7)); + assign Sewfh7 = (Uvqfh7 & Yewfh7); + assign Yewfh7 = (~(Efwfh7 & Kfwfh7)); + assign Efwfh7 = (Qfwfh7 & Shvfh7); + assign Qfwfh7 = (~(Omrfh7 & Umrfh7)); + assign Kcrfh7 = (Wfwfh7 & Uvqfh7); + assign Wfwfh7 = (M2tfh7 & C7wfh7); + assign Mewfh7 = (Ijqfh7 & Cgwfh7); + assign Cgwfh7 = (~(Sqrfh7 & Kxrfh7)); + assign Sqrfh7 = (C7wfh7 & Usrfh7); + assign Ijqfh7 = (~(Eltfh7 | Igwfh7)); + assign Igwfh7 = (Ogwfh7 & Uvqfh7); + assign Ogwfh7 = (Omrfh7 & C7wfh7); + assign Eltfh7 = (~(Ugwfh7 & Ahwfh7)); + assign Ahwfh7 = (Ghwfh7 & Mhwfh7); + assign Mhwfh7 = (~(Shwfh7 & Yhwfh7)); + assign Yhwfh7 = (~(Eiwfh7 & W6wfh7)); + assign W6wfh7 = (~(Mktfh7 | M2tfh7)); + assign Eiwfh7 = (Y5vfh7 & U4vfh7); + assign Shwfh7 = (~(Wivfh7 & Elvfh7)); + assign Ghwfh7 = (~(M8vfh7 & Kiwfh7)); + assign Kiwfh7 = (~(Qiwfh7 & Wiwfh7)); + assign Wiwfh7 = (Cjwfh7 & Ijufh7); + assign Ijufh7 = (~(Ijwfh7 & Mktfh7)); + assign Cjwfh7 = (S8wfh7 & Iavfh7); + assign S8wfh7 = (~(M2tfh7 & Ijwfh7)); + assign Qiwfh7 = (Kfwfh7 & Ujsfh7); + assign Ujsfh7 = (~(Krrfh7 | Yhqfh7)); + assign Krrfh7 = (~(Yntfh7 & Shvfh7)); + assign Shvfh7 = (!Swqfh7); + assign Swqfh7 = (~(Mnufh7 | Ojwfh7)); + assign Kfwfh7 = (Eotfh7 & Mtvfh7); + assign Mtvfh7 = (!Yhrfh7); + assign Yhrfh7 = (~(Y5vfh7 | Ojwfh7)); + assign M8vfh7 = (!Mhufh7); + assign Ugwfh7 = (Ytsfh7 & Ujwfh7); + assign Ujwfh7 = (~(Uvqfh7 & Akwfh7)); + assign Akwfh7 = (~(Gkwfh7 & Mkwfh7)); + assign Mkwfh7 = (Skwfh7 & Elsfh7); + assign Skwfh7 = (Qivfh7 & W6vfh7); + assign Gkwfh7 = (Mhvfh7 & Ykwfh7); + assign Ykwfh7 = (~(C7wfh7 & O1rfh7)); + assign Mhvfh7 = (Snvfh7 & Ghufh7); + assign Uvqfh7 = (Elwfh7 & Klwfh7); + assign Ytsfh7 = (Qlwfh7 & C4tfh7); + assign C4tfh7 = (~(M2tfh7 & K0vfh7)); + assign K0vfh7 = (C7wfh7 & Ahvfh7); + assign Qlwfh7 = (Ovsfh7 & Ivsfh7); + assign Ivsfh7 = (~(Aewfh7 & Exqfh7)); + assign Aewfh7 = (!Oyvfh7); + assign Ovsfh7 = (O4vfh7 | Y5vfh7); + assign Yktfh7 = (Wlwfh7 & Q6sfh7); + assign Q6sfh7 = (~(Mnvfh7 & Mntfh7)); + assign Mnvfh7 = (!Iavfh7); + assign Wlwfh7 = (Ybtfh7 & U1ufh7); + assign U1ufh7 = (Gnufh7 | Y5vfh7); + assign Y5vfh7 = (!Omrfh7); + assign Ybtfh7 = (~(Kuvfh7 & M2tfh7)); + assign Uawfh7 = (Cmwfh7 & Csvfh7); + assign Csvfh7 = (Imwfh7 & Omwfh7); + assign Omwfh7 = (Umwfh7 & Anwfh7); + assign Anwfh7 = (Q9qfh7 & Cdrfh7); + assign Cdrfh7 = (W6vfh7 | Upvfh7); + assign Upvfh7 = (!Cyvfh7); + assign Cyvfh7 = (Usrfh7 & Umrfh7); + assign Q9qfh7 = (Ywtfh7 | W6vfh7); + assign Umwfh7 = (Gkufh7 & K0qfh7); + assign K0qfh7 = (S5vfh7 | Mnufh7); + assign Mnufh7 = (!Mktfh7); + assign Mktfh7 = (Gnwfh7 & Ovwfh7[2]); + assign S5vfh7 = (!Abvfh7); + assign Abvfh7 = (~(Oavfh7 | W9wfh7)); + assign Gkufh7 = (~(Klufh7 & Kxrfh7)); + assign Klufh7 = (Exqfh7 & Umrfh7); + assign Imwfh7 = (Mnwfh7 & Kltfh7); + assign Kltfh7 = (Snwfh7 & Ynwfh7); + assign Ynwfh7 = (Eowfh7 & Kowfh7); + assign Kowfh7 = (Szvfh7 & Szrfh7); + assign Szrfh7 = (Snvfh7 | Anufh7); + assign Snvfh7 = (!Osrfh7); + assign Szvfh7 = (Iyqfh7 & Mhrfh7); + assign Mhrfh7 = (Qowfh7 | Mhufh7); + assign Iyqfh7 = (Iavfh7 | Ojufh7); + assign Iavfh7 = (~(Ijwfh7 & Omrfh7)); + assign Omrfh7 = (Wowfh7 & Ovwfh7[3]); + assign Wowfh7 = (~(Cpwfh7 | Ovwfh7[6])); + assign Eowfh7 = (Klrfh7 & Szqfh7); + assign Szqfh7 = (Qowfh7 | Anufh7); + assign Klrfh7 = (!Swtfh7); + assign Swtfh7 = (~(W6vfh7 | Wivfh7)); + assign Snwfh7 = (Ipwfh7 & Opwfh7); + assign Opwfh7 = (Idrfh7 & U1vfh7); + assign U1vfh7 = (Ghufh7 | Anufh7); + assign Ghufh7 = (!Gnvfh7); + assign Gnvfh7 = (Ijwfh7 & O1rfh7); + assign O1rfh7 = (!Extfh7); + assign Idrfh7 = (~(Usrfh7 & Upwfh7)); + assign Upwfh7 = (~(Qowfh7 & Stvfh7)); + assign Usrfh7 = (!Ojufh7); + assign Ojufh7 = (~(Aqwfh7 & Ovwfh7[9])); + assign Aqwfh7 = (Ovwfh7[7] & Gqwfh7); + assign Ipwfh7 = (Yeqfh7 & U4sfh7); + assign U4sfh7 = (~(Yhqfh7 & Mntfh7)); + assign Yhqfh7 = (Ijwfh7 & M2qfh7); + assign Yeqfh7 = (!Y2rfh7); + assign Y2rfh7 = (~(Mqwfh7 & Sqwfh7)); + assign Sqwfh7 = (~(Ahvfh7 & Yqwfh7)); + assign Yqwfh7 = (~(Stvfh7 & Eotfh7)); + assign Eotfh7 = (!Awqfh7); + assign Awqfh7 = (~(Ipvfh7 | Ojwfh7)); + assign Ipvfh7 = (!M2tfh7); + assign M2tfh7 = (Erwfh7 & Ovwfh7[3]); + assign Erwfh7 = (~(Ovwfh7[2] | Ovwfh7[6])); + assign Mqwfh7 = (~(M5wfh7 & Mntfh7)); + assign M5wfh7 = (!Qowfh7); + assign Qowfh7 = (~(Ijwfh7 & E6vfh7)); + assign Mnwfh7 = (Ojrfh7 & Qorfh7); + assign Qorfh7 = (Ywtfh7 | Elsfh7); + assign Elsfh7 = (!E6vfh7); + assign E6vfh7 = (Krwfh7 & Ovwfh7[6]); + assign Krwfh7 = (Ovwfh7[2] & Qrwfh7); + assign Ywtfh7 = (!Exrfh7); + assign Ojrfh7 = (Stvfh7 | Mhufh7); + assign Stvfh7 = (~(Kxrfh7 & Ijwfh7)); + assign Cmwfh7 = (Uaufh7 & E6tfh7); + assign E6tfh7 = (Wrwfh7 & K9qfh7); + assign K9qfh7 = (O4vfh7 | Qivfh7); + assign Qivfh7 = (!Kxrfh7); + assign Kxrfh7 = (Cswfh7 & Ovwfh7[6]); + assign Cswfh7 = (Cpwfh7 & Qrwfh7); + assign Qrwfh7 = (!Ovwfh7[3]); + assign O4vfh7 = (!G2tfh7); + assign G2tfh7 = (Mntfh7 & C7wfh7); + assign Wrwfh7 = (G5qfh7 & Wurfh7); + assign Wurfh7 = (~(Exrfh7 & M2qfh7)); + assign Exrfh7 = (Errfh7 & Umrfh7); + assign Errfh7 = (!Uvvfh7); + assign Uvvfh7 = (~(Iswfh7 & Ovwfh7[9])); + assign Iswfh7 = (Ovwfh7[8] & Klwfh7); + assign G5qfh7 = (Elvfh7 | W6vfh7); + assign Elvfh7 = (!I1rfh7); + assign I1rfh7 = (~(Oswfh7 | Mhufh7)); + assign Oswfh7 = (!C7wfh7); + assign Uaufh7 = (Uswfh7 & Iptfh7); + assign Iptfh7 = (Atwfh7 & Gtwfh7); + assign Gtwfh7 = (~(Osrfh7 & Mntfh7)); + assign Mntfh7 = (!Mkvfh7); + assign Mkvfh7 = (~(Mtwfh7 & Ovwfh7[8])); + assign Mtwfh7 = (~(Klwfh7 | Ovwfh7[9])); + assign Osrfh7 = (~(Ojwfh7 | Extfh7)); + assign Atwfh7 = (~(Ahvfh7 & Stwfh7)); + assign Stwfh7 = (~(Ytwfh7 & Yntfh7)); + assign Yntfh7 = (!Ywqfh7); + assign Ywqfh7 = (~(Ojwfh7 | U4vfh7)); + assign U4vfh7 = (!M2qfh7); + assign M2qfh7 = (Gnwfh7 & Cpwfh7); + assign Gnwfh7 = (~(Ovwfh7[3] | Ovwfh7[6])); + assign Ytwfh7 = (Oyvfh7 & Y8wfh7); + assign Y8wfh7 = (!G8vfh7); + assign G8vfh7 = (~(W6vfh7 | Ojwfh7)); + assign Ojwfh7 = (!Awvfh7); + assign Awvfh7 = (Euwfh7 & Kuwfh7); + assign Oyvfh7 = (~(Iprfh7 & Ijwfh7)); + assign Ijwfh7 = (Ovwfh7[4] & Kuwfh7); + assign Kuwfh7 = (!Ovwfh7[5]); + assign Ahvfh7 = (!Oavfh7); + assign Oavfh7 = (~(Quwfh7 & Ovwfh7[9])); + assign Quwfh7 = (Klwfh7 & Gqwfh7); + assign Gqwfh7 = (!Ovwfh7[8]); + assign Klwfh7 = (!Ovwfh7[7]); + assign Uswfh7 = (Efsfh7 & Sksfh7); + assign Sksfh7 = (Gnufh7 | W6vfh7); + assign W6vfh7 = (!Iprfh7); + assign Iprfh7 = (Wuwfh7 & Ovwfh7[6]); + assign Wuwfh7 = (Ovwfh7[3] & Cpwfh7); + assign Cpwfh7 = (!Ovwfh7[2]); + assign Gnufh7 = (!Kuvfh7); + assign Kuvfh7 = (Exqfh7 & C7wfh7); + assign C7wfh7 = (Ovwfh7[5] & Ovwfh7[4]); + assign Exqfh7 = (!Anufh7); + assign Anufh7 = (~(Cvwfh7 & Ovwfh7[8])); + assign Cvwfh7 = (~(Ovwfh7[7] | Ovwfh7[9])); + assign Efsfh7 = (Extfh7 | Wivfh7); + assign Wivfh7 = (Mhufh7 | W9wfh7); + assign W9wfh7 = (!Umrfh7); + assign Umrfh7 = (Ovwfh7[5] & Euwfh7); + assign Euwfh7 = (!Ovwfh7[4]); + assign Mhufh7 = (~(Elwfh7 & Ovwfh7[7])); + assign Elwfh7 = (~(Ovwfh7[8] | Ovwfh7[9])); + assign Extfh7 = (~(Ivwfh7 & Ovwfh7[6])); + assign Ivwfh7 = (Ovwfh7[3] & Ovwfh7[2]); + + always @(posedge HCLK) Fwwfh7 <= Dspfh7; + always @(posedge HCLK) Dxwfh7 <= Yrpfh7; + always @(posedge HCLK) Bywfh7 <= Trpfh7; + always @(posedge HCLK) Zywfh7 <= Orpfh7; + always @(posedge HCLK) Xzwfh7 <= Jrpfh7; + always @(posedge HCLK) V0xfh7 <= Erpfh7; + always @(posedge HCLK) T1xfh7 <= Zqpfh7; + always @(posedge HCLK) R2xfh7 <= Uqpfh7; +endmodule + +/* Design Summary + modules: 1 + udps: 0 + mod flatinsts: 0 + udp flatinsts: 0 + nodes: 1136 (0) + node widths: 1220 (0) + process: 8 (0) + gates: 0 (0) + contassigns: 1156 (0) + ports: 13 (0) + modinsts: 0 (0) + udpinsts: 0 (0) + portconnects: 0 (0) +*/ + +// END: VCS tokens +// Currnet Allocated Virtual Memory Size: 203.46 MB +// =================== +// DESIGN STATISTICS +// =================== +// +// No. of design lines (note: includes comments and blank lines) 2337 +// +// Static<!> Elaborated<@> Size(KB) +// ------ ---------- -------- +// No. of all modules (module+interface+package+program): 1 1 0 +// No. of module instances: 1 1 0 +// No. of all processes: 8 8 0 +// No. of all nodes (variable+net): 1136 1136 0 +// No. of constants 101 101 0 +// No. of scalar nets: 1121 1121 0 +// No. of vector nets: 7 7 0 +// No. of scalar regs/logics: 8 8 0 +// No. of always blocks: 8 8 0 +// No. of operators: 1413 1413 0 +// No. of bit selects: 99 99 0 +// No. of non-blocking assignments: 8 8 0 +// No. of continuous assignments: 1156 1156 0 +// +// No. of top level modules/programs/packages/interfaces: 1 +// modules: 1 +// No. of module+udp ports: 13 +// +// Footnotes: +// --------- +// <!> No. of unique instances of a construct as it appears in the source. +// <@> No. of instances of a construct when the design is elaborated. +// K, M, B: Counted in thousands, millions and billions (if big numbers are present) +// +// <#> Multiple specify blocks in the SAME module are combined and counted +// as ONE block. diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/bootrom.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/bootrom.v new file mode 100644 index 0000000000000000000000000000000000000000..f5b0e7f2e5c11f2e9c8dd7c2017e2e776e585bc9 --- /dev/null +++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/bootrom.v @@ -0,0 +1,267 @@ +module bootrom ( + input wire CLK, + input wire EN, + input wire [9:2] ADDR, + output reg [31:0] RDATA ); +reg [9:2] addr_r; +always @(posedge CLK) if (EN) addr_r <= ADDR; +always @(addr_r) case(addr_r[9:2]) + 8'h000 : RDATA <= 32'h20000368; // 0x0000 + 8'h001 : RDATA <= 32'h010002d1; // 0x0004 + 8'h002 : RDATA <= 32'h010002d9; // 0x0008 + 8'h003 : RDATA <= 32'h010002db; // 0x000c + 8'h004 : RDATA <= 32'h00000000; // 0x0010 + 8'h005 : RDATA <= 32'h00000000; // 0x0014 + 8'h006 : RDATA <= 32'h00000000; // 0x0018 + 8'h007 : RDATA <= 32'h00000000; // 0x001c + 8'h008 : RDATA <= 32'h00000000; // 0x0020 + 8'h009 : RDATA <= 32'h00000000; // 0x0024 + 8'h00a : RDATA <= 32'h00000000; // 0x0028 + 8'h00b : RDATA <= 32'h010002dd; // 0x002c + 8'h00c : RDATA <= 32'h00000000; // 0x0030 + 8'h00d : RDATA <= 32'h00000000; // 0x0034 + 8'h00e : RDATA <= 32'h010002df; // 0x0038 + 8'h00f : RDATA <= 32'h010002e1; // 0x003c + 8'h010 : RDATA <= 32'h010002e3; // 0x0040 + 8'h011 : RDATA <= 32'h010002e3; // 0x0044 + 8'h012 : RDATA <= 32'h010002e3; // 0x0048 + 8'h013 : RDATA <= 32'h010002e3; // 0x004c + 8'h014 : RDATA <= 32'h010002e3; // 0x0050 + 8'h015 : RDATA <= 32'h010002e3; // 0x0054 + 8'h016 : RDATA <= 32'h010002e3; // 0x0058 + 8'h017 : RDATA <= 32'h010002e3; // 0x005c + 8'h018 : RDATA <= 32'h010002e3; // 0x0060 + 8'h019 : RDATA <= 32'h010002e3; // 0x0064 + 8'h01a : RDATA <= 32'h010002e3; // 0x0068 + 8'h01b : RDATA <= 32'h00000000; // 0x006c + 8'h01c : RDATA <= 32'h010002e3; // 0x0070 + 8'h01d : RDATA <= 32'h010002e3; // 0x0074 + 8'h01e : RDATA <= 32'h010002e3; // 0x0078 + 8'h01f : RDATA <= 32'h010002e3; // 0x007c + 8'h020 : RDATA <= 32'h010002e3; // 0x0080 + 8'h021 : RDATA <= 32'h010002e3; // 0x0084 + 8'h022 : RDATA <= 32'h010002e3; // 0x0088 + 8'h023 : RDATA <= 32'h010002e3; // 0x008c + 8'h024 : RDATA <= 32'h010002e3; // 0x0090 + 8'h025 : RDATA <= 32'h010002e3; // 0x0094 + 8'h026 : RDATA <= 32'h010002e3; // 0x0098 + 8'h027 : RDATA <= 32'h010002e3; // 0x009c + 8'h028 : RDATA <= 32'h010002e3; // 0x00a0 + 8'h029 : RDATA <= 32'h010002e3; // 0x00a4 + 8'h02a : RDATA <= 32'h010002e3; // 0x00a8 + 8'h02b : RDATA <= 32'h010002e3; // 0x00ac + 8'h02c : RDATA <= 32'h010002e3; // 0x00b0 + 8'h02d : RDATA <= 32'h010002e3; // 0x00b4 + 8'h02e : RDATA <= 32'h010002e3; // 0x00b8 + 8'h02f : RDATA <= 32'h010002e3; // 0x00bc + 8'h030 : RDATA <= 32'hf802f000; // 0x00c0 + 8'h031 : RDATA <= 32'hf83ef000; // 0x00c4 + 8'h032 : RDATA <= 32'hc830a00c; // 0x00c8 + 8'h033 : RDATA <= 32'h18243808; // 0x00cc + 8'h034 : RDATA <= 32'h46a2182d; // 0x00d0 + 8'h035 : RDATA <= 32'h46ab1e67; // 0x00d4 + 8'h036 : RDATA <= 32'h465d4654; // 0x00d8 + 8'h037 : RDATA <= 32'hd10142ac; // 0x00dc + 8'h038 : RDATA <= 32'hf830f000; // 0x00e0 + 8'h039 : RDATA <= 32'h3e0f467e; // 0x00e4 + 8'h03a : RDATA <= 32'h46b6cc0f; // 0x00e8 + 8'h03b : RDATA <= 32'h42332601; // 0x00ec + 8'h03c : RDATA <= 32'h1afbd000; // 0x00f0 + 8'h03d : RDATA <= 32'h46ab46a2; // 0x00f4 + 8'h03e : RDATA <= 32'h47184333; // 0x00f8 + 8'h03f : RDATA <= 32'h00000278; // 0x00fc + 8'h040 : RDATA <= 32'h00000298; // 0x0100 + 8'h041 : RDATA <= 32'hd3023a10; // 0x0104 + 8'h042 : RDATA <= 32'hc178c878; // 0x0108 + 8'h043 : RDATA <= 32'h0752d8fa; // 0x010c + 8'h044 : RDATA <= 32'hc830d301; // 0x0110 + 8'h045 : RDATA <= 32'hd501c130; // 0x0114 + 8'h046 : RDATA <= 32'h600c6804; // 0x0118 + 8'h047 : RDATA <= 32'h00004770; // 0x011c + 8'h048 : RDATA <= 32'h24002300; // 0x0120 + 8'h049 : RDATA <= 32'h26002500; // 0x0124 + 8'h04a : RDATA <= 32'hd3013a10; // 0x0128 + 8'h04b : RDATA <= 32'hd8fbc178; // 0x012c + 8'h04c : RDATA <= 32'hd3000752; // 0x0130 + 8'h04d : RDATA <= 32'hd500c130; // 0x0134 + 8'h04e : RDATA <= 32'h4770600b; // 0x0138 + 8'h04f : RDATA <= 32'hbd1fb51f; // 0x013c + 8'h050 : RDATA <= 32'hbd10b510; // 0x0140 + 8'h051 : RDATA <= 32'hf8e3f000; // 0x0144 + 8'h052 : RDATA <= 32'hf7ff4611; // 0x0148 + 8'h053 : RDATA <= 32'hf000fff7; // 0x014c + 8'h054 : RDATA <= 32'hf000f84a; // 0x0150 + 8'h055 : RDATA <= 32'hb403f8fb; // 0x0154 + 8'h056 : RDATA <= 32'hfff2f7ff; // 0x0158 + 8'h057 : RDATA <= 32'hf000bc03; // 0x015c + 8'h058 : RDATA <= 32'h0000f901; // 0x0160 + 8'h059 : RDATA <= 32'h68012000; // 0x0164 + 8'h05a : RDATA <= 32'h6841468d; // 0x0168 + 8'h05b : RDATA <= 32'h00004708; // 0x016c + 8'h05c : RDATA <= 32'h2110483c; // 0x0170 + 8'h05d : RDATA <= 32'h21416101; // 0x0174 + 8'h05e : RDATA <= 32'h493b6081; // 0x0178 + 8'h05f : RDATA <= 32'h61882020; // 0x017c + 8'h060 : RDATA <= 32'h49384770; // 0x0180 + 8'h061 : RDATA <= 32'h07d2684a; // 0x0184 + 8'h062 : RDATA <= 32'h6008d1fc; // 0x0188 + 8'h063 : RDATA <= 32'h49354770; // 0x018c + 8'h064 : RDATA <= 32'h2b007803; // 0x0190 + 8'h065 : RDATA <= 32'h684ad006; // 0x0194 + 8'h066 : RDATA <= 32'hd1fc07d2; // 0x0198 + 8'h067 : RDATA <= 32'h1c40600b; // 0x019c + 8'h068 : RDATA <= 32'hd1f52b00; // 0x01a0 + 8'h069 : RDATA <= 32'hb5104770; // 0x01a4 + 8'h06a : RDATA <= 32'h68014830; // 0x01a8 + 8'h06b : RDATA <= 32'hd0082900; // 0x01ac + 8'h06c : RDATA <= 32'h60012100; // 0x01b0 + 8'h06d : RDATA <= 32'h8f4ff3bf; // 0x01b4 + 8'h06e : RDATA <= 32'h8f6ff3bf; // 0x01b8 + 8'h06f : RDATA <= 32'hffd2f7ff; // 0x01bc + 8'h070 : RDATA <= 32'h4828bd10; // 0x01c0 + 8'h071 : RDATA <= 32'h781aa32a; // 0x01c4 + 8'h072 : RDATA <= 32'hd0062a00; // 0x01c8 + 8'h073 : RDATA <= 32'h07c96841; // 0x01cc + 8'h074 : RDATA <= 32'h6002d1fc; // 0x01d0 + 8'h075 : RDATA <= 32'h2a001c5b; // 0x01d4 + 8'h076 : RDATA <= 32'h2104d1f5; // 0x01d8 + 8'h077 : RDATA <= 32'h07d26842; // 0x01dc + 8'h078 : RDATA <= 32'h6001d1fc; // 0x01e0 + 8'h079 : RDATA <= 32'hb510e7fe; // 0x01e4 + 8'h07a : RDATA <= 32'h2110481e; // 0x01e8 + 8'h07b : RDATA <= 32'h21416101; // 0x01ec + 8'h07c : RDATA <= 32'h4a1d6081; // 0x01f0 + 8'h07d : RDATA <= 32'h61912120; // 0x01f4 + 8'h07e : RDATA <= 32'h781aa326; // 0x01f8 + 8'h07f : RDATA <= 32'hd0062a00; // 0x01fc + 8'h080 : RDATA <= 32'h07c96841; // 0x0200 + 8'h081 : RDATA <= 32'h6002d1fc; // 0x0204 + 8'h082 : RDATA <= 32'h2a001c5b; // 0x0208 + 8'h083 : RDATA <= 32'ha326d1f5; // 0x020c + 8'h084 : RDATA <= 32'h2a00781a; // 0x0210 + 8'h085 : RDATA <= 32'h6841d006; // 0x0214 + 8'h086 : RDATA <= 32'hd1fc07c9; // 0x0218 + 8'h087 : RDATA <= 32'h1c5b6002; // 0x021c + 8'h088 : RDATA <= 32'hd1f52a00; // 0x0220 + 8'h089 : RDATA <= 32'h680a4911; // 0x0224 + 8'h08a : RDATA <= 32'hd0092a00; // 0x0228 + 8'h08b : RDATA <= 32'h60082000; // 0x022c + 8'h08c : RDATA <= 32'h8f4ff3bf; // 0x0230 + 8'h08d : RDATA <= 32'h8f6ff3bf; // 0x0234 + 8'h08e : RDATA <= 32'hff94f7ff; // 0x0238 + 8'h08f : RDATA <= 32'hbd102000; // 0x023c + 8'h090 : RDATA <= 32'h781aa30b; // 0x0240 + 8'h091 : RDATA <= 32'hd0062a00; // 0x0244 + 8'h092 : RDATA <= 32'h07c96841; // 0x0248 + 8'h093 : RDATA <= 32'h6002d1fc; // 0x024c + 8'h094 : RDATA <= 32'h2a001c5b; // 0x0250 + 8'h095 : RDATA <= 32'h2204d1f5; // 0x0254 + 8'h096 : RDATA <= 32'h07c96841; // 0x0258 + 8'h097 : RDATA <= 32'h6002d1fc; // 0x025c + 8'h098 : RDATA <= 32'h0000e7fe; // 0x0260 + 8'h099 : RDATA <= 32'h40006000; // 0x0264 + 8'h09a : RDATA <= 32'h40011000; // 0x0268 + 8'h09b : RDATA <= 32'h4001f000; // 0x026c + 8'h09c : RDATA <= 32'h7245202d; // 0x0270 + 8'h09d : RDATA <= 32'h3a726f72; // 0x0274 + 8'h09e : RDATA <= 32'h4d455220; // 0x0278 + 8'h09f : RDATA <= 32'h69205041; // 0x027c + 8'h0a0 : RDATA <= 32'h6c612073; // 0x0280 + 8'h0a1 : RDATA <= 32'h64616572; // 0x0284 + 8'h0a2 : RDATA <= 32'h6c632079; // 0x0288 + 8'h0a3 : RDATA <= 32'h0a726165; // 0x028c + 8'h0a4 : RDATA <= 32'h00000000; // 0x0290 + 8'h0a5 : RDATA <= 32'h534d430a; // 0x0294 + 8'h0a6 : RDATA <= 32'h42204b44; // 0x0298 + 8'h0a7 : RDATA <= 32'h20746f6f; // 0x029c + 8'h0a8 : RDATA <= 32'h64616f4c; // 0x02a0 + 8'h0a9 : RDATA <= 32'h000a7265; // 0x02a4 + 8'h0aa : RDATA <= 32'h6f6c202d; // 0x02a8 + 8'h0ab : RDATA <= 32'h66206461; // 0x02ac + 8'h0ac : RDATA <= 32'h6873616c; // 0x02b0 + 8'h0ad : RDATA <= 32'h0000000a; // 0x02b4 + 8'h0ae : RDATA <= 32'h48034904; // 0x02b8 + 8'h0af : RDATA <= 32'h47706008; // 0x02bc + 8'h0b0 : RDATA <= 32'h48014902; // 0x02c0 + 8'h0b1 : RDATA <= 32'h47706008; // 0x02c4 + 8'h0b2 : RDATA <= 32'h05f5e100; // 0x02c8 + 8'h0b3 : RDATA <= 32'h20000000; // 0x02cc + 8'h0b4 : RDATA <= 32'h47804807; // 0x02d0 + 8'h0b5 : RDATA <= 32'h47004807; // 0x02d4 + 8'h0b6 : RDATA <= 32'he7fee7fe; // 0x02d8 + 8'h0b7 : RDATA <= 32'he7fee7fe; // 0x02dc + 8'h0b8 : RDATA <= 32'he7fee7fe; // 0x02e0 + 8'h0b9 : RDATA <= 32'h49054804; // 0x02e4 + 8'h0ba : RDATA <= 32'h4b064a05; // 0x02e8 + 8'h0bb : RDATA <= 32'h00004770; // 0x02ec + 8'h0bc : RDATA <= 32'h010002c1; // 0x02f0 + 8'h0bd : RDATA <= 32'h010000c1; // 0x02f4 + 8'h0be : RDATA <= 32'h20000068; // 0x02f8 + 8'h0bf : RDATA <= 32'h20000368; // 0x02fc + 8'h0c0 : RDATA <= 32'h20000168; // 0x0300 + 8'h0c1 : RDATA <= 32'h20000168; // 0x0304 + 8'h0c2 : RDATA <= 32'h47704770; // 0x0308 + 8'h0c3 : RDATA <= 32'h46754770; // 0x030c + 8'h0c4 : RDATA <= 32'hf824f000; // 0x0310 + 8'h0c5 : RDATA <= 32'h000546ae; // 0x0314 + 8'h0c6 : RDATA <= 32'h46534669; // 0x0318 + 8'h0c7 : RDATA <= 32'h00c008c0; // 0x031c + 8'h0c8 : RDATA <= 32'hb0184685; // 0x0320 + 8'h0c9 : RDATA <= 32'hf7ffb520; // 0x0324 + 8'h0ca : RDATA <= 32'hbc60ffdd; // 0x0328 + 8'h0cb : RDATA <= 32'h08492700; // 0x032c + 8'h0cc : RDATA <= 32'h260046b6; // 0x0330 + 8'h0cd : RDATA <= 32'hc5c0c5c0; // 0x0334 + 8'h0ce : RDATA <= 32'hc5c0c5c0; // 0x0338 + 8'h0cf : RDATA <= 32'hc5c0c5c0; // 0x033c + 8'h0d0 : RDATA <= 32'hc5c0c5c0; // 0x0340 + 8'h0d1 : RDATA <= 32'h00493d40; // 0x0344 + 8'h0d2 : RDATA <= 32'h4770468d; // 0x0348 + 8'h0d3 : RDATA <= 32'h4604b510; // 0x034c + 8'h0d4 : RDATA <= 32'h46c046c0; // 0x0350 + 8'h0d5 : RDATA <= 32'hf7ff4620; // 0x0354 + 8'h0d6 : RDATA <= 32'hbd10fefe; // 0x0358 + 8'h0d7 : RDATA <= 32'h47704800; // 0x035c + 8'h0d8 : RDATA <= 32'h20000004; // 0x0360 + 8'h0d9 : RDATA <= 32'h20184901; // 0x0364 + 8'h0da : RDATA <= 32'he7febeab; // 0x0368 + 8'h0db : RDATA <= 32'h00020026; // 0x036c + 8'h0dc : RDATA <= 32'h00004770; // 0x0370 + 8'h0dd : RDATA <= 32'h01000394; // 0x0374 + 8'h0de : RDATA <= 32'h20000000; // 0x0378 + 8'h0df : RDATA <= 32'h00000004; // 0x037c + 8'h0e0 : RDATA <= 32'h01000104; // 0x0380 + 8'h0e1 : RDATA <= 32'h01000398; // 0x0384 + 8'h0e2 : RDATA <= 32'h20000004; // 0x0388 + 8'h0e3 : RDATA <= 32'h00000364; // 0x038c + 8'h0e4 : RDATA <= 32'h01000120; // 0x0390 + 8'h0e5 : RDATA <= 32'h05f5e100; // 0x0394 + 8'h0e6 : RDATA <= 32'h00000000; // 0x0398 + 8'h0e7 : RDATA <= 32'h00000000; // 0x039c + 8'h0e8 : RDATA <= 32'h00000000; // 0x03a0 + 8'h0e9 : RDATA <= 32'h00000000; // 0x03a4 + 8'h0ea : RDATA <= 32'h00000000; // 0x03a8 + 8'h0eb : RDATA <= 32'h00000000; // 0x03ac + 8'h0ec : RDATA <= 32'h00000000; // 0x03b0 + 8'h0ed : RDATA <= 32'h00000000; // 0x03b4 + 8'h0ee : RDATA <= 32'h00000000; // 0x03b8 + 8'h0ef : RDATA <= 32'h00000000; // 0x03bc + 8'h0f0 : RDATA <= 32'h00000000; // 0x03c0 + 8'h0f1 : RDATA <= 32'h00000000; // 0x03c4 + 8'h0f2 : RDATA <= 32'h00000000; // 0x03c8 + 8'h0f3 : RDATA <= 32'h00000000; // 0x03cc + 8'h0f4 : RDATA <= 32'h00000000; // 0x03d0 + 8'h0f5 : RDATA <= 32'h00000000; // 0x03d4 + 8'h0f6 : RDATA <= 32'h00000000; // 0x03d8 + 8'h0f7 : RDATA <= 32'h00000000; // 0x03dc + 8'h0f8 : RDATA <= 32'h00000000; // 0x03e0 + 8'h0f9 : RDATA <= 32'h00000000; // 0x03e4 + 8'h0fa : RDATA <= 32'h00000000; // 0x03e8 + 8'h0fb : RDATA <= 32'h00000000; // 0x03ec + 8'h0fc : RDATA <= 32'h00000000; // 0x03f0 + 8'h0fd : RDATA <= 32'h00000000; // 0x03f4 + 8'h0fe : RDATA <= 32'h00000000; // 0x03f8 + 8'h0ff : RDATA <= 32'h00000000; // 0x03fc + default : RDATA <=32'h0; + endcase +endmodule diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_chip.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_chip.v new file mode 100644 index 0000000000000000000000000000000000000000..240cef550f95a9422ce53cd8bb52dd740461d6e1 --- /dev/null +++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_chip.v @@ -0,0 +1,1320 @@ +//----------------------------------------------------------------------------- +// customised top-level example Cortex-M0 controller +// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license. +// +// Contributors +// +// David Flynn (d.w.flynn@soton.ac.uk) +// +// Copyright © 2021, SoC Labs (www.soclabs.org) +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// The confidential and proprietary information contained in this file may +// only be used by a person authorised under and to the extent permitted +// by a subsisting licensing agreement from Arm Limited or its affiliates. +// +// (C) COPYRIGHT 2010-2013 Arm Limited or its affiliates. +// ALL RIGHTS RESERVED +// +// This entire notice must be reproduced on all copies of this file +// and copies of this file may only be made by a person if such person is +// permitted to do so under the terms of a subsisting license agreement +// from Arm Limited or its affiliates. +// +// SVN Information +// +// Checked In : $Date: 2017-10-10 15:55:38 +0100 (Tue, 10 Oct 2017) $ +// +// Revision : $Revision: 371321 $ +// +// Release Information : Cortex-M System Design Kit-r1p1-00rel0 +// +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +// Abstract : Top level for example Cortex-M0/Cortex-M0+ microcontroller +//----------------------------------------------------------------------------- +// + +`include "cmsdk_mcu_defs.v" + +`define SYNTHBOOTROM + +module cmsdk_mcu_chip #( + //----------------------------------------- + // CPU options + +`ifdef ARM_CMSDK_INCLUDE_CLKGATE + parameter CLKGATE_PRESENT = 1, +`else + parameter CLKGATE_PRESENT = 0, +`endif + parameter BE = 0, // Big or little endian + parameter BKPT = 4, // Number of breakpoint comparators + parameter DBG = 1, // Debug configuration + parameter NUMIRQ = 32, // NUM of IRQ + parameter SMUL = 0, // Multiplier configuration + parameter SYST = 1, // SysTick + parameter WIC = 1, // Wake-up interrupt controller support + parameter WICLINES = 34, // Supported WIC lines + parameter WPT = 2, // Number of DWT comparators + parameter RESET_ALL_REGS = 0, // Do not reset all registers + + parameter BOOT_MEM_TYPE = `ARM_CMSDK_BOOT_MEM_TYPE, // Boot loader memory type + + parameter ROM_MEM_TYPE = `ARM_CMSDK_ROM_MEM_TYPE, // ROM memory type + + parameter RAM_MEM_TYPE = `ARM_CMSDK_RAM_MEM_TYPE, // RAM memory type + + //----------------------------------------- + // System options + +`ifdef ARM_CMSDK_INCLUDE_DMA + parameter INCLUDE_DMA = 1, // Include instantiation of DMA-230 + // This option also add a number of bus components + parameter DMA_CHANNEL_NUM = 1, +`else + parameter INCLUDE_DMA = 0, + parameter DMA_CHANNEL_NUM = 1, +`endif + +`ifdef ARM_CMSDK_INCLUDE_BITBAND + parameter INCLUDE_BITBAND = 1, + // Include instantiation of Bit-band wrapper + // This option add bit band wrapper to CPU interface +`else + parameter INCLUDE_BITBAND = 0, +`endif + +`ifdef ARM_CMSDK_INCLUDE_JTAG + parameter INCLUDE_JTAG = 1 // Include JTAG feature +`else + parameter INCLUDE_JTAG = 0 // Do not Include JTAG feature +`endif + ) + ( +`ifdef POWER_PINS + inout wire VDDIO, + inout wire VSSIO, + inout wire VDD, + inout wire VSS, +`endif + input wire XTAL1, // input + output wire XTAL2, // output + input wire NRST, // active low reset + inout wire [15:0] P0, + inout wire [15:0] P1, + +`ifdef ARM_CMSDK_INCLUDE_JTAG + input wire nTRST, + input wire TDI, + output wire TDO, +`endif + inout wire SWDIOTMS, + input wire SWCLKTCK); + + +//------------------------------------ +// internal wires + + wire xtal_clk_in; + wire xtal_clk_out; + wire nrst_in; + wire [15:0] p0_in; // level-shifted input from pad + wire [15:0] p0_out; // output port drive + wire [15:0] p0_out_en; // active high output drive enable (pad tech dependent) + wire [15:0] p0_out_nen; // active low output drive enable (pad tech dependent) + wire [15:0] p1_in; // level-shifted input from pad + wire [15:0] p1_out; // output port drive + wire [15:0] p1_out_en; // active high output drive enable (pad tech dependent) + wire [15:0] p1_out_nen; // active low output drive enable (pad tech dependent) + wire [15:0] p1_out_mux; // output port drive + wire [15:0] p1_out_en_mux; // active high output drive enable (pad tech dependent) + wire [15:0] p1_out_nen_mux; // active low output drive enable (pad tech dependent) + +`ifdef ARM_CMSDK_INCLUDE_JTAG + wire ntrst_in; + wire tdi_in; + wire tdo_out; +`endif + wire swdio_in; + wire swdio_out; + wire swdio_out_en; + wire swdio_out_nen; + wire swdclk_in; + + +/* + cmsdk_mcu_core + #(.CLKGATE_PRESENT (CLKGATE_PRESENT), + .BE (BE), + .BKPT (BKPT), // Number of breakpoint comparators + .DBG (DBG), // Debug configuration + .NUMIRQ (NUMIRQ), // NUMIRQ + .SMUL (SMUL), // Multiplier configuration + .SYST (SYST), // SysTick + .WIC (WIC), // Wake-up interrupt controller support + .WICLINES (WICLINES), // Supported WIC lines +`ifdef CORTEX_M0PLUS + .AWIDTH (AWIDTH), // Micro Trace Buffer SRAM address width + .BASEADDR (BASEADDR), // ROM Table Base Address + .HWF (HWF), // Half Word Fetching + .IOP (IOP), // IO Port interface selected + .IRQDIS (IRQDIS), // Interrupt Disable + .MPU (MPU), // Memory Protection support + .MTB (MTB), // MTB select + .USER (USER), // User/Privilege + .VTOR (VTOR), // Vector Table Offset support +`endif + .WPT (WPT), // Number of DWT comparators + .RESET_ALL_REGS (RESET_ALL_REGS), // Do not reset all registers + .BOOT_MEM_TYPE (BOOT_MEM_TYPE), // Boot loader memory type + .ROM_MEM_TYPE (ROM_MEM_TYPE), // ROM memory type + .RAM_MEM_TYPE (RAM_MEM_TYPE), // RAM loader memory type + .INCLUDE_BITBAND (INCLUDE_BITBAND), // Include bit band wrapper + .INCLUDE_DMA (INCLUDE_DMA), // Include DMA feature + .INCLUDE_JTAG (INCLUDE_JTAG) // Include JTAG feature + ) + u_cmsdk_mcu_core ( +`ifdef POWER_PINS + .VDDIO (VDDIO), + .VSSIO (VSSIO), + .VDD (VDD), + .VSS (VSS), +`endif + .clk (xtal_clk_in), // primary clock + .clk_out (xtal_clk_out), // inverted clock out + .nrst (nrst_in) // primary reset (active-low) + + .p0_in (p0_in ), // level-shifted input from pad + .p0_out (p0_out ), // output port drive + .p0_out_en (p0_out_en ), // active high output drive enable (pad tech dependent) + .p0_out_nen (p0_out_nen), // active low output drive enable (pad tech dependent) + + .p1_in (p1_in ), // level-shifted input from pad + .p1_out_mux (p1_out ), // output port drive + .p1_out_en_mux (p1_out_en ), // active high output drive enable (pad tech dependent) + .p1_out_nen_mux (p1_out_nen), // active low output drive enable (pad tech dependent) + +`ifdef ARM_CMSDK_INCLUDE_JTAG + .ntrst (ntrst_in), // JTAG reset (active-low) + .tdi (tdi_in), // JTAG reset (active-low) + .tdo (tdo_out), // inverted clock out +`endif + .swdio_in (swdio_in), // Serial Wire Debug IO input + .swdio_out (swdio_out), // Serial Wire Debug IO output + .swdio_out_en (swdio_out_en), // Serial Wire Debug IO output drive enable (active high) + .swdio_out_nen (swdio_out_nen), // Serial Wire Debug IO output drive enable (active low) + .swdclk (swdclk_in) // Serial Wire Debug clock input + ); +*/ + +//TIE_HI uTIEHI (.tiehi(tiehi)); + wire tiehi = 1'b1; +//TIE_LO uTIELO (.tielo(tielo)); + wire tielo = 1'b0; + + // -------------------------------------------------------------------------------- + // IO pad (GLIB Generic Library napping) + // -------------------------------------------------------------------------------- + +`ifdef POWER_PINS +// Pad IO power supplies + +PAD_VDDIO uPAD_VDDIO_1( + .PAD(VDDIO) + ); + +PAD_VDDIO uPAD_VSSIO_1( + .PAD(VSSIO) + ); + +// Core power supplies + +PAD_VDDIO uPAD_VDD_1( + .PAD(VDD) + ); + +PAD_VDDIO uPAD_VSS_1( + .PAD(VSS) + ); +`endif + +// Clock, Reset and Serial Wire Debug ports + +PAD_INOUT8MA_NOE uPAD_XTAL_I ( + .PAD (XTAL1), + .O (tielo), + .I (xtal_clk_in), + .NOE (tiehi) + ); + +PAD_INOUT8MA_NOE uPAD_XTAL_O ( + .PAD (XTAL2), + .O (xtal_clk_out), + .I (tielo), + .NOE (tielo) + ); + +PAD_INOUT8MA_NOE uPAD_NRST_I ( + .PAD (NRST), + .O (tielo), + .I (nrst_in), + .NOE (tiehi) + ); + +PAD_INOUT8MA_NOE uPAD_SWDIO_I ( + .PAD (SWDIOTMS), + .O (swdio_out), + .I (swdio_in), + .NOE (swdio_out_nen) + ); + +PAD_INOUT8MA_NOE uPAD_SWDCLK_I ( + .PAD (SWCLKTCK), + .O (tielo), + .I (swdclk_in), + .NOE (tiehi) + ); + +// GPI.I Port 0 x 16 + +PAD_INOUT8MA_NOE uPAD_P0_00 ( + .PAD (P0[00]), + .O (p0_out[00]), + .I (p0_in[00]), + .NOE (p0_out_nen[00]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_01 ( + .PAD (P0[01]), + .O (p0_out[01]), + .I (p0_in[01]), + .NOE (p0_out_nen[01]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_02 ( + .PAD (P0[02]), + .O (p0_out[02]), + .I (p0_in[02]), + .NOE (p0_out_nen[02]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_03 ( + .PAD (P0[03]), + .O (p0_out[03]), + .I (p0_in[03]), + .NOE (p0_out_nen[03]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_04 ( + .PAD (P0[04]), + .O (p0_out[04]), + .I (p0_in[04]), + .NOE (p0_out_nen[04]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_05 ( + .PAD (P0[05]), + .O (p0_out[05]), + .I (p0_in[05]), + .NOE (p0_out_nen[05]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_06 ( + .PAD (P0[06]), + .O (p0_out[06]), + .I (p0_in[06]), + .NOE (p0_out_nen[06]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_07 ( + .PAD (P0[07]), + .O (p0_out[07]), + .I (p0_in[07]), + .NOE (p0_out_nen[07]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_08 ( + .PAD (P0[08]), + .O (p0_out[08]), + .I (p0_in[08]), + .NOE (p0_out_nen[08]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_09 ( + .PAD (P0[09]), + .O (p0_out[09]), + .I (p0_in[09]), + .NOE (p0_out_nen[09]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_10 ( + .PAD (P0[10]), + .O (p0_out[10]), + .I (p0_in[10]), + .NOE (p0_out_nen[10]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_11 ( + .PAD (P0[11]), + .O (p0_out[11]), + .I (p0_in[11]), + .NOE (p0_out_nen[11]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_12 ( + .PAD (P0[12]), + .O (p0_out[12]), + .I (p0_in[12]), + .NOE (p0_out_nen[12]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_13 ( + .PAD (P0[13]), + .O (p0_out[13]), + .I (p0_in[13]), + .NOE (p0_out_nen[13]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_14 ( + .PAD (P0[14]), + .O (p0_out[14]), + .I (p0_in[14]), + .NOE (p0_out_nen[14]) + ); + +PAD_INOUT8MA_NOE uPAD_P0_15 ( + .PAD (P0[15]), + .O (p0_out[15]), + .I (p0_in[15]), + .NOE (p0_out_nen[15]) + ); + +// GPI.I Port 1 x 16 + +PAD_INOUT8MA_NOE uPAD_P1_00 ( + .PAD (P1[00]), + .O (p1_out_mux[00]), + .I (p1_in[00]), + .NOE (p1_out_nen_mux[00]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_01 ( + .PAD (P1[01]), + .O (p1_out_mux[01]), + .I (p1_in[01]), + .NOE (p1_out_nen_mux[01]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_02 ( + .PAD (P1[02]), + .O (p1_out_mux[02]), + .I (p1_in[02]), + .NOE (p1_out_nen_mux[02]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_03 ( + .PAD (P1[03]), + .O (p1_out_mux[03]), + .I (p1_in[03]), + .NOE (p1_out_nen_mux[03]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_04 ( + .PAD (P1[04]), + .O (p1_out_mux[04]), + .I (p1_in[04]), + .NOE (p1_out_nen_mux[04]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_05 ( + .PAD (P1[05]), + .O (p1_out_mux[05]), + .I (p1_in[05]), + .NOE (p1_out_nen_mux[05]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_06 ( + .PAD (P1[06]), + .O (p1_out_mux[06]), + .I (p1_in[06]), + .NOE (p1_out_nen_mux[06]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_07 ( + .PAD (P1[07]), + .O (p1_out_mux[07]), + .I (p1_in[07]), + .NOE (p1_out_nen_mux[07]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_08 ( + .PAD (P1[08]), + .O (p1_out_mux[08]), + .I (p1_in[08]), + .NOE (p1_out_nen_mux[08]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_09 ( + .PAD (P1[09]), + .O (p1_out_mux[09]), + .I (p1_in[09]), + .NOE (p1_out_nen_mux[09]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_10 ( + .PAD (P1[10]), + .O (p1_out_mux[10]), + .I (p1_in[10]), + .NOE (p1_out_nen_mux[10]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_11 ( + .PAD (P1[11]), + .O (p1_out_mux[11]), + .I (p1_in[11]), + .NOE (p1_out_nen_mux[11]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_12 ( + .PAD (P1[12]), + .O (p1_out_mux[12]), + .I (p1_in[12]), + .NOE (p1_out_nen_mux[12]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_13 ( + .PAD (P1[13]), + .O (p1_out_mux[13]), + .I (p1_in[13]), + .NOE (p1_out_nen_mux[13]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_14 ( + .PAD (P1[14]), + .O (p1_out_mux[14]), + .I (p1_in[14]), + .NOE (p1_out_nen_mux[14]) + ); + +PAD_INOUT8MA_NOE uPAD_P1_15 ( + .PAD (P1[15]), + .O (p1_out_mux[15]), + .I (p1_in[15]), + .NOE (p1_out_nen_mux[15]) + ); + +//------------------------------------ +// internal wires + + assign p0_out_nen = ~p0_out_en; //active low pad drive option + assign p1_out_nen_mux = ~p1_out_en_mux; //active low pad drive option + + wire SLEEPING; + wire APBACTIVE; + wire SYSRESETREQ; // processor system reset request + wire WDOGRESETREQ; // watchdog system reset request + wire HRESETREQ; // Combined system reset request + wire cmsdk_SYSRESETREQ; // Combined system reset request + wire clk_ctrl_sys_reset_req; + wire PMUHRESETREQ; + wire PMUDBGRESETREQ; + wire LOCKUP; + wire LOCKUPRESET; + wire PMUENABLE; + wire SLEEPDEEP; + + +`ifdef CORTEX_M0DESIGNSTART + // if using DesignStart CortexM0, remove these signals +`else + wire WAKEUP; + wire GATEHCLK; + wire WICENREQ; + wire WICENACK; + wire CDBGPWRUPREQ; + wire CDBGPWRUPACK; + wire SLEEPHOLDREQn; + wire SLEEPHOLDACKn; + + wire SYSPWRDOWNACK; + wire DBGPWRDOWNACK; + wire SYSPWRDOWN; + wire DBGPWRDOWN; + wire SYSISOLATEn; + wire SYSRETAINn; + wire DBGISOLATEn; +`endif + + wire PORESETn;// Power on reset + wire HRESETn; // AHB reset + wire PRESETn; // APB and peripheral reset +`ifndef CORTEX_M0DESIGNSTART + wire DBGRESETn; // Debug system reset +`endif + wire FCLK; // Free running system clock + wire HCLK; // System clock from PMU +`ifndef CORTEX_M0DESIGNSTART + wire DCLK; +`endif + wire SCLK; + wire PCLK; // Peripheral clock + wire PCLKG; // Gated PCLK for APB + wire HCLKSYS; // System clock for memory + wire PCLKEN; // Clock divider for AHB to APB bridge + // Common AHB signals + wire [31:0] HADDR; + wire [1:0] HTRANS; + wire [2:0] HSIZE; + wire HWRITE; + wire [31:0] HWDATA; + wire HREADY; + +// DMA controller master interface + wire [31:0] dmac_haddr; + wire [1:0] dmac_htrans; + wire [2:0] dmac_hsize; + wire [2:0] dmac_hburst; + wire [3:0] dmac_hprot; + wire dmac_hmastlock; + wire dmac_hwrite; + wire [31:0] dmac_hwdata; + wire [31:0] dmac_hrdata; + wire dmac_hready; + wire dmac_hresp; + + wire dmac_done; + wire dmac_err; + wire dmac_psel; + wire dmac_pready; + wire exp_penable; + wire exp_pwrite; + wire [11:0] exp_paddr; + wire [31:0] exp_pwdata; + wire dmac_pslverr; + wire [31:0] dmac_prdata; + + // Flash memory AHB signals + wire flash_hsel; + wire flash_hreadyout; + wire [31:0] flash_hrdata; + wire flash_hresp; + + // SRAM AHB signals + wire sram_hsel; + wire sram_hreadyout; + wire [31:0] sram_hrdata; + wire sram_hresp; + + // Boot loader/firmware AHB signals + // Only use if BOOT_MEM_TYPE is not zero + wire boot_hsel; + wire boot_hreadyout; + wire [31:0] boot_hrdata; + wire boot_hresp; + + // internal peripheral signals + wire uart0_rxd; + wire uart0_txd; + wire uart0_txen; + wire uart1_rxd; + wire uart1_txd; + wire uart1_txen; + wire uart2_rxd; + wire uart2_txd; + wire uart2_txen; + + wire timer0_extin; + wire timer1_extin; + + wire [15:0] p0_altfunc; + + wire [15:0] p1_altfunc; + + localparam BASEADDR_GPIO0 = 32'h4001_0000; + localparam BASEADDR_GPIO1 = 32'h4001_1000; + localparam BASEADDR_SYSROMTABLE = 32'hF000_0000; + +`ifdef CORTEX_M0PLUS +`ifdef ARM_CMSDK_INCLUDE_MTB + // MTB Control + wire TSTART; + wire TSTOP; + + // EMBEDDED SRAM (MTB) INTERFACE + wire RAMHCLK; + wire [31:0] RAMRD; + wire [AWIDTH-3:0] RAMAD; + wire [31:0] RAMWD; + wire RAMCS; + wire [ 3:0] RAMWE; + + localparam BASEADDR_MTBSRAM = 32'hF021_0000; + + wire [31:0] SRAMBASEADDR = BASEADDR_MTBSRAM; +`endif +`endif + + // Internal Debug signals + wire i_trst_n; + wire i_swditms; + wire i_swclktck; + wire i_tdi; + wire i_tdo; + wire i_tdoen_n; + wire i_swdo; + wire i_swdoen; + + wire TESTMODE; + +`ifdef ARM_CMSDK_INCLUDE_JTAG +`else + // Serial wire debug is used. nTRST, TDI and TDO are not needed + wire nTRST = 1'b0; + wire TDI = 1'b1; + wire TDO; +`endif + + assign TESTMODE = 1'b0; + +//---------------------------------------- +// Clock and reset controller +//---------------------------------------- +`ifdef CORTEX_M0DESIGNSTART + // Clock controller generates reset if PMU request (PMUHRESETREQ), + // CPU request or watchdog request (SYSRESETREQ) + assign clk_ctrl_sys_reset_req = PMUHRESETREQ | cmsdk_SYSRESETREQ; +`else + // Clock controller generates reset if PMU request (PMUHRESETREQ), + // CPU request or watchdog request (HRESETREQ) + assign clk_ctrl_sys_reset_req = PMUHRESETREQ | HRESETREQ; +`endif + + // Clock controller to generate reset and clock signals + cmsdk_mcu_clkctrl + #(.CLKGATE_PRESENT(CLKGATE_PRESENT)) + u_cmsdk_mcu_clkctrl( + // inputs + .XTAL1 (xtal_clk_in), + .NRST (nrst_in), + + .APBACTIVE (APBACTIVE), + .SLEEPING (SLEEPING), + .SLEEPDEEP (SLEEPDEEP), + .LOCKUP (LOCKUP), + .LOCKUPRESET (LOCKUPRESET), + .SYSRESETREQ (clk_ctrl_sys_reset_req), + .DBGRESETREQ (PMUDBGRESETREQ), + .CGBYPASS (TESTMODE), + .RSTBYPASS (TESTMODE), + + // outputs + .XTAL2 (xtal_clk_out), + + .FCLK (FCLK), + + .PCLK (PCLK), + .PCLKG (PCLKG), + .PCLKEN (PCLKEN), +`ifdef CORTEX_M0DESIGNSTART + .PORESETn (PORESETn), // for cm0 designstart + .HRESETn (HRESETn), // for cm0 designstart +`endif + .PRESETn (PRESETn) + ); + +//---------------------------------------- +// + // System Reset request can be from processor or watchdog + // or when lockup happens and the control flag is set. + assign cmsdk_SYSRESETREQ = SYSRESETREQ | WDOGRESETREQ | + (LOCKUP & LOCKUPRESET); + +`ifdef CORTEX_M0DESIGNSTART + // Power Management Unit will not be available + assign HCLK = FCLK; // connect HCLK to FCLK + assign SCLK = FCLK; // connect SCLK to FCLK + + // Since there is no PMU, these signals are not used + assign PMUDBGRESETREQ = 1'b0; + assign PMUHRESETREQ = 1'b0; + +`else + + wire gated_hclk; + wire gated_dclk; + wire gated_sclk; + +`ifdef CORTEX_M0 + // Cortex-M0 Power management unit + cortexm0_pmu u_cortexm0_pmu + ( // Inputs + .FCLK (FCLK), + .PORESETn (PORESETn), + .HRESETREQ (cmsdk_SYSRESETREQ), // from processor / watchdog + .PMUENABLE (PMUENABLE), // from System Controller + .WICENACK (WICENACK), // from WIC in integration + + .WAKEUP (WAKEUP), // from WIC in integration + .CDBGPWRUPREQ (CDBGPWRUPREQ), + + .SLEEPDEEP (SLEEPDEEP), + .SLEEPHOLDACKn (SLEEPHOLDACKn), + .GATEHCLK (GATEHCLK), + .SYSPWRDOWNACK (SYSPWRDOWNACK), + .DBGPWRDOWNACK (DBGPWRDOWNACK), + .CGBYPASS (TESTMODE), + + // Outputs + .HCLK (gated_hclk), + .DCLK (gated_dclk), + .SCLK (gated_sclk), + .WICENREQ (WICENREQ), + .CDBGPWRUPACK (CDBGPWRUPACK), + .SYSISOLATEn (SYSISOLATEn), + .SYSRETAINn (SYSRETAINn), + .SYSPWRDOWN (SYSPWRDOWN), + .DBGISOLATEn (DBGISOLATEn), + .DBGPWRDOWN (DBGPWRDOWN), + .SLEEPHOLDREQn (SLEEPHOLDREQn), + .PMUDBGRESETREQ (PMUDBGRESETREQ), + .PMUHRESETREQ (PMUHRESETREQ) + ); + + cortexm0_rst_ctl u_rst_ctl + (// Inputs + .GLOBALRESETn (NRST), + .FCLK (FCLK), + .HCLK (gated_hclk), + .DCLK (gated_dclk), + .SYSRESETREQ (cmsdk_SYSRESETREQ), + .PMUHRESETREQ (PMUHRESETREQ), + .PMUDBGRESETREQ (PMUDBGRESETREQ), + .RSTBYPASS (1'b0), + .SE (1'b0), + + // Outputs + .PORESETn (PORESETn), + .HRESETn (HRESETn), + .DBGRESETn (DBGRESETn), + .HRESETREQ (HRESETREQ)); + +`else + // Cortex-M0+ Power management unit + cm0p_ik_pmu u_cortexm0plus_pmu + ( // Inputs + .FCLK (FCLK), + .PORESETn (PORESETn), + .HRESETREQ (HRESETREQ), + .PMUENABLE (PMUENABLE), + .WICENACK (WICENACK), + + .WAKEUP (WAKEUP), + .CDBGPWRUPREQ (CDBGPWRUPREQ), + + .SLEEPDEEP (SLEEPDEEP), + .SLEEPHOLDACKn (SLEEPHOLDACKn), + .GATEHCLK (GATEHCLK), + .SYSPWRDOWNACK (SYSPWRDOWNACK), + .DBGPWRDOWNACK (DBGPWRDOWNACK), + .DFTSE (1'b0), + + // Outputs + .HCLK (gated_hclk), + .DCLK (gated_dclk), + .SCLK (gated_sclk), + .WICENREQ (WICENREQ), + .CDBGPWRUPACK (CDBGPWRUPACK), + .SYSISOLATEn (SYSISOLATEn), + .SYSRETAINn (SYSRETAINn), + .SYSPWRDOWN (SYSPWRDOWN), + .DBGISOLATEn (DBGISOLATEn), + .DBGPWRDOWN (DBGPWRDOWN), + .SLEEPHOLDREQn (SLEEPHOLDREQn), + .PMUHRESETREQ (PMUHRESETREQ), + .PMUDBGRESETREQ (PMUDBGRESETREQ) + ); + + cm0p_ik_rst_ctl u_rst_ctl + (// Inputs + .GLOBALRESETn (NRST), + .FCLK (FCLK), + .HCLK (gated_hclk), + .DCLK (gated_dclk), + .SYSRESETREQ (cmsdk_SYSRESETREQ), + .PMUHRESETREQ (PMUHRESETREQ), + .PMUDBGRESETREQ (PMUDBGRESETREQ), + .HREADY (HREADY), + .DFTRSTDISABLE (1'b0), + .DFTSE (1'b0), + + // Outputs + .PORESETn (PORESETn), + .HRESETn (HRESETn), + .DBGRESETn (DBGRESETn), + .HRESETREQ (HRESETREQ)); + +`endif + + // Bypass clock gating cell in PMU if CLKGATE_PRESENT is 0 + assign HCLK = (CLKGATE_PRESENT==0) ? FCLK : gated_hclk; + assign DCLK = (CLKGATE_PRESENT==0) ? FCLK : gated_dclk; + assign SCLK = (CLKGATE_PRESENT==0) ? FCLK : gated_sclk; + + // In this example system, power control takes place immediately. + // In a real circuit you might need to add delays in the next two + // signal assignments for correct operation. + assign SYSPWRDOWNACK = SYSPWRDOWN; + assign DBGPWRDOWNACK = DBGPWRDOWN; + +`endif + + // ------------------------------- + // DMA Controller + // ------------------------------- + + // DMA interface not used in this example system + wire [DMA_CHANNEL_NUM-1:0] dma230_tie0; // tie off signal. + + assign dma230_tie0 = {DMA_CHANNEL_NUM{1'b0}}; + + // DMA done per channel + wire [DMA_CHANNEL_NUM-1:0] dma230_done_ch; + + generate if (INCLUDE_DMA != 0) begin : gen_pl230_udma + // DMA controller present + pl230_udma u_pl230_udma ( + // Clock and Reset + .hclk (HCLKSYS), + .hresetn (HRESETn), + // DMA Control + .dma_req (dma230_tie0), + .dma_sreq (dma230_tie0), + .dma_waitonreq (dma230_tie0), + .dma_stall (1'b0), + .dma_active (), + .dma_done (dma230_done_ch), + .dma_err (dmac_err), + // AHB-Lite Master Interface + .hready (dmac_hready), + .hresp (dmac_hresp), + .hrdata (dmac_hrdata), + .htrans (dmac_htrans), + .hwrite (dmac_hwrite), + .haddr (dmac_haddr), + .hsize (dmac_hsize), + .hburst (dmac_hburst), + .hmastlock (dmac_hmastlock), + .hprot (dmac_hprot), + .hwdata (dmac_hwdata), + // APB Slave Interface + .pclken (PCLKEN), + .psel (dmac_psel), + .pen (exp_penable), + .pwrite (exp_pwrite), + .paddr (exp_paddr[11:0]), + .pwdata (exp_pwdata[31:0]), + .prdata (dmac_prdata) + ); + + assign dmac_pready = 1'b1; + assign dmac_pslverr = 1'b0; + assign dmac_done = |dma230_done_ch; // OR all the DMA done together + + end else begin : gen_no_pl230_udma + // DMA controller not present + assign dmac_htrans = 2'b00; + assign dmac_hwrite = 1'b0; + assign dmac_haddr = 32'h00000000; + assign dmac_hsize = 3'b000; + assign dmac_hburst = 3'b000; + assign dmac_hmastlock = 1'b0; + assign dmac_hprot = 4'b0000; + assign dmac_hwdata = 32'h00000000; + + assign dmac_done = 1'b0; + assign dmac_err = 1'b0; + assign dmac_pready = 1'b1; + assign dmac_pslverr = 1'b0; + assign dmac_prdata = 32'h00000000; + assign dma230_done_ch = {DMA_CHANNEL_NUM{1'b0}}; + + end endgenerate + +//--------------------------------------------------- +// System design for example Cortex-M0/Cortex-M0+ MCU +//--------------------------------------------------- + cmsdk_mcu_system + #(.CLKGATE_PRESENT (CLKGATE_PRESENT), + .BE (BE), + .BASEADDR_GPIO0 (BASEADDR_GPIO0), // GPIO0 Base Address + .BASEADDR_GPIO1 (BASEADDR_GPIO1), // GPIO1 Base Address + .BKPT (BKPT), // Number of breakpoint comparators + .DBG (DBG), // Debug configuration + .NUMIRQ (NUMIRQ), // NUMIRQ + .SMUL (SMUL), // Multiplier configuration + .SYST (SYST), // SysTick + .WIC (WIC), // Wake-up interrupt controller support + .WICLINES (WICLINES), // Supported WIC lines + .WPT (WPT), // Number of DWT comparators + .RESET_ALL_REGS (RESET_ALL_REGS), // Do not reset all registers + .BOOT_MEM_TYPE (BOOT_MEM_TYPE), // Boot loader memory type + .INCLUDE_DMA (INCLUDE_DMA), // Include DMA feature + .INCLUDE_BITBAND (INCLUDE_BITBAND), // Include bit band wrapper + .INCLUDE_JTAG (INCLUDE_JTAG), // Include JTAG feature + .BASEADDR_SYSROMTABLE (BASEADDR_SYSROMTABLE) // System ROM Table base address + ) + u_cmsdk_mcu_system ( + .FCLK (FCLK), + .HCLK (HCLK), +`ifndef CORTEX_M0DESIGNSTART + .DCLK (DCLK), +`endif + .SCLK (SCLK), + .HRESETn (HRESETn), + .PORESETn (PORESETn), +`ifdef CORTEX_M0 + .DBGRESETn (DBGRESETn), + .RSTBYPASS (TESTMODE), +`endif + + .PCLK (PCLK), + .PCLKG (PCLKG), + .PRESETn (PRESETn), + .PCLKEN (PCLKEN), + + // Common AHB signals + .HADDR (HADDR), + .HTRANS (HTRANS), + .HSIZE (HSIZE), + .HWRITE (HWRITE), + .HWDATA (HWDATA), + .HREADY (HREADY), + + // Flash + .flash_hsel (flash_hsel), + .flash_hreadyout (flash_hreadyout), + .flash_hrdata (flash_hrdata), + .flash_hresp (flash_hresp), + + // SRAM + .sram_hsel (sram_hsel), + .sram_hreadyout (sram_hreadyout), + .sram_hrdata (sram_hrdata), + .sram_hresp (sram_hresp), + + // Optional boot loader + // Only use if BOOT_MEM_TYPE is not zero + .boot_hsel (boot_hsel), + .boot_hreadyout (boot_hreadyout), + .boot_hrdata (boot_hrdata), + .boot_hresp (boot_hresp), + + // Status + .APBACTIVE (APBACTIVE), + .SLEEPING (SLEEPING), + .SYSRESETREQ (SYSRESETREQ), + .WDOGRESETREQ (WDOGRESETREQ), + .LOCKUP (LOCKUP), + .LOCKUPRESET (LOCKUPRESET), + .PMUENABLE (PMUENABLE), + .SLEEPDEEP (SLEEPDEEP), + +`ifdef CORTEX_M0DESIGNSTART +`else //if using DesignStart CortexM0, remove these signals + + .GATEHCLK (GATEHCLK), + .WAKEUP (WAKEUP), + .WICENREQ (WICENREQ), + .WICENACK (WICENACK), + .CDBGPWRUPREQ (CDBGPWRUPREQ), + .CDBGPWRUPACK (CDBGPWRUPACK), + .SLEEPHOLDREQn (SLEEPHOLDREQn), + .SLEEPHOLDACKn (SLEEPHOLDACKn), + + // Debug + .nTRST (i_trst_n), + .SWDITMS (i_swditms), + .SWCLKTCK (i_swclktck), + .TDI (i_tdi), + .TDO (i_tdo), + .nTDOEN (i_tdoen_n), + .SWDO (i_swdo), + .SWDOEN (i_swdoen), +`endif + + // UART + .uart0_rxd (uart0_rxd), + .uart0_txd (uart0_txd), + .uart0_txen (uart0_txen), + .uart1_rxd (uart1_rxd), + .uart1_txd (uart1_txd), + .uart1_txen (uart1_txen), + .uart2_rxd (uart2_rxd), + .uart2_txd (uart2_txd), + .uart2_txen (uart2_txen), + + // Timer + .timer0_extin (timer0_extin), + .timer1_extin (timer1_extin), + + // IO Ports + .p0_in (p0_in), + .p0_out (p0_out), + .p0_outen (p0_out_en), + .p0_altfunc (p0_altfunc), + + .p1_in (p1_in), + .p1_out (p1_out), + .p1_outen (p1_out_en), + .p1_altfunc (p1_altfunc), + + + // DMA Control + // .dma_req (dma230_tie0), + // .dma_sreq (dma230_tie0), + // .dma_waitonreq (dma230_tie0), + // .dma_stall (1'b0), + // .dma_active (), + .dma_done (dmac_done), + .dma_err (dmac_err), + // AHB-Lite Master Interface + .dmac_hready (dmac_hready), + .dmac_hresp (dmac_hresp), + .dmac_hrdata (dmac_hrdata), + .dmac_htrans (dmac_htrans), + .dmac_hwrite (dmac_hwrite), + .dmac_haddr (dmac_haddr), + .dmac_hsize (dmac_hsize), + .dmac_hburst (dmac_hburst), + .dmac_hmastlock (dmac_hmastlock), + .dmac_hprot (dmac_hprot), + .dmac_hwdata (dmac_hwdata), + // APB Slave Interface + .dmac_psel (dmac_psel), + .exp_penable (exp_penable), + .exp_pwrite (exp_pwrite), + .exp_paddr (exp_paddr[11:0]), + .exp_pwdata (exp_pwdata[31:0]), + .dmac_prdata (dmac_prdata), + .dmac_pready (1'b1), + .dmac_pslverr (1'b0), + + .DFTSE (1'b0) + ); + +//---------------------------------------- +// If DMA is present, use SCLK for system HCLK so that +// DMA can run even if processor is in sleep mode. +// Otherwise there is only one master (cpu), so AHB system +// clock can be stopped when DMA take place. + +// assign HCLKSYS = (INCLUDE_DMA!=0) ? SCLK : HCLK; + assign HCLKSYS = SCLK; + +//---------------------------------------- +// Flash memory +//---------------------------------------- +cmsdk_ahb_rom + #(.MEM_TYPE(ROM_MEM_TYPE), + .AW(16), // 64K bytes flash ROM +// .AW(13), // 8K bytes flash ROM -Dhry +// .AW(10), // 1K bytes flash ROM - Hello + .filename("image.hex"), + .WS_N(`ARM_CMSDK_ROM_MEM_WS_N), + .WS_S(`ARM_CMSDK_ROM_MEM_WS_S), + .BE (BE)) + u_ahb_rom ( + .HCLK (HCLKSYS), + .HRESETn (HRESETn), + .HSEL (flash_hsel), // AHB inputs + .HADDR (HADDR[15:0]), +// .HADDR (HADDR[12:0]), +// .HADDR (HADDR[ 9:0]), + .HTRANS (HTRANS), + .HSIZE (HSIZE), + .HWRITE (HWRITE), + .HWDATA (HWDATA), + .HREADY (HREADY), + + .HREADYOUT (flash_hreadyout), // Outputs + .HRDATA (flash_hrdata), + .HRESP (flash_hresp) + ); + +//---------------------------------------- +// Boot loader / Firmware +//---------------------------------------- + +`ifdef SYNTHBOOTROM +ahb_bootrom__mangled +// #(.AW(10) ) // 1K bytes ROM + u_ahb_bootloader ( + .HCLK (HCLKSYS), + .HRESETn (HRESETn), + .HSEL (boot_hsel), // AHB inputs + .HADDR (HADDR[ 9:0]), + .HTRANS (HTRANS), + .HSIZE (HSIZE), + .HWRITE (HWRITE), + .HWDATA (HWDATA), + .HREADY (HREADY), + + .HREADYOUT (boot_hreadyout), // Outputs + .HRDATA (boot_hrdata), + .HRESP (boot_hresp) + ); + +`else +// Only use if BOOT_MEM_TYPE is not zero +cmsdk_ahb_rom + #(.MEM_TYPE(BOOT_MEM_TYPE), +// .AW(12), // 4K bytes ROM + .AW(10), // 1K bytes ROM + .filename("bootloader.hex"), + .WS_N(`ARM_CMSDK_BOOT_MEM_WS_N), + .WS_S(`ARM_CMSDK_BOOT_MEM_WS_S), + .BE (BE)) + u_ahb_bootloader ( + .HCLK (HCLKSYS), + .HRESETn (HRESETn), + .HSEL (boot_hsel), // AHB inputs +// .HADDR (HADDR[11:0]), + .HADDR (HADDR[ 9:0]), + .HTRANS (HTRANS), + .HSIZE (HSIZE), + .HWRITE (HWRITE), + .HWDATA (HWDATA), + .HREADY (HREADY), + + .HREADYOUT (boot_hreadyout), // Outputs + .HRDATA (boot_hrdata), + .HRESP (boot_hresp) + ); +`endif + +//---------------------------------------- +// SRAM +//---------------------------------------- +cmsdk_ahb_ram + #(.MEM_TYPE(RAM_MEM_TYPE), + .AW(16), // 64K bytes SRAM +// .AW( 9), // 1K bytes SRAM + .WS_N(`ARM_CMSDK_RAM_MEM_WS_N), + .WS_S(`ARM_CMSDK_RAM_MEM_WS_S)) + u_ahb_ram ( + .HCLK (HCLKSYS), + .HRESETn (HRESETn), + .HSEL (sram_hsel), // AHB inputs + .HADDR (HADDR[15:0]), +// .HADDR (HADDR[ 8:0]), + .HTRANS (HTRANS), + .HSIZE (HSIZE), + .HWRITE (HWRITE), + .HWDATA (HWDATA), + .HREADY (HREADY), + + .HREADYOUT (sram_hreadyout), // Outputs + .HRDATA (sram_hrdata), + .HRESP (sram_hresp) + ); + +//---------------------------------------- +// MTB SRAM Memory +//---------------------------------------- +`ifdef CORTEX_M0PLUS +`ifdef ARM_CMSDK_INCLUDE_MTB + + cm0p_ik_sram + #(.MEMNAME ("MTB SRAM"), + .DATAWIDTH (32), + .ADDRWIDTH (AWIDTH-2), + .MEMBASE (BASEADDR_MTBSRAM)) + u_mtbram + (//Output + .RDATA (RAMRD), + //Inputs + .CLK (RAMHCLK), + .ADDRESS (RAMAD[AWIDTH-3:0]), + .CS (RAMCS), + .WE (RAMWE), + .WDATA (RAMWD)); + +`endif +`endif + +//---------------------------------------- +// I/O port pin muxing and tristate +//---------------------------------------- + + assign i_swclktck = swdclk_in; + assign i_swditms = swdio_in; + assign swdio_out = i_swdo; + assign swdio_out_en = i_swdoen; + assign swdio_out_nen = !i_swdoen; + + cmsdk_mcu_pin_mux + u_pin_mux ( + // UART + .uart0_rxd (uart0_rxd), + .uart0_txd (uart0_txd), + .uart0_txen (uart0_txen), + .uart1_rxd (uart1_rxd), + .uart1_txd (uart1_txd), + .uart1_txen (uart1_txen), + .uart2_rxd (uart2_rxd), + .uart2_txd (uart2_txd), + .uart2_txen (uart2_txen), + + // Timer + .timer0_extin (timer0_extin), + .timer1_extin (timer1_extin), + +`ifdef CORTEX_M0PLUS +`ifdef ARM_CMSDK_INCLUDE_MTB + // MTB CONTROL + .TSTART (TSTART), + .TSTOP (TSTOP), +`endif +`endif + + // IO Ports + .p0_in ( ), // was (p0_in) now from pad inputs), + .p0_out (p0_out), + .p0_outen (p0_out_en), + .p0_altfunc (p0_altfunc), + + .p1_in ( ), // was(p1_in) now from pad inputs), + .p1_out (p1_out), + .p1_outen (p1_out_en), + .p1_altfunc (p1_altfunc), + + // Debug + .i_trst_n (i_trst_n), + .i_swditms ( ), //i_swditms), + .i_swclktck ( ), //i_swclktck), + .i_tdi (i_tdi), + .i_tdo (i_tdo), + .i_tdoen_n (i_tdoen_n), + .i_swdo (i_swdo), + .i_swdoen (i_swdoen), + + // IO pads + .p1_out_mux (p1_out_mux), + .p1_out_en_mux (p1_out_en_mux), + .P0 ( ), //P0), + .P1 ( ), //P1), + + .nTRST (nTRST), // Not needed if serial-wire debug is used + .TDI (TDI), // Not needed if serial-wire debug is used + .SWDIOTMS ( ), //SWDIOTMS), + .SWCLKTCK ( ), //SWCLKTCK), + .TDO (TDO) // Not needed if serial-wire debug is used + + ); + +endmodule + + + diff --git a/GLIB/mem/verilog/SROM_Ax32.v b/GLIB/mem/verilog/SROM_Ax32.v new file mode 100644 index 0000000000000000000000000000000000000000..47ebf21162f7faffbb56569ed43278a7cf2c6917 --- /dev/null +++ b/GLIB/mem/verilog/SROM_Ax32.v @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------------- +// +// Synthesizable byte-write addressible R/W (random-access) memory +// +// Synchronous data write, flow-though (non-pipeline registered) read data +// +// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license. +// +// Contributors +// +// David Flynn (d.w.flynn@soton.ac.uk) +// +// Copyright © 2021, SoC Labs (www.soclabs.org) +//----------------------------------------------------------------------------- + +module SROM_Ax32 + #(parameter ADDRWIDTH = 10, + parameter filename = "rom32.hex", + parameter romgen = 0 + ) + (input wire CLK, + input wire [ADDRWIDTH-1:0] ADDR, //Address Input + input wire SEL, //Select (active-high) + output wire [31:0] RDATA); //Read Data + + localparam MEMDEPTH = (1 << (ADDRWIDTH)-1)-1; + localparam romgenfile = "rom32_bootmem.v"; + + // Reg declarations + reg [7:0] rombyte0 [0:MEMDEPTH]; + reg [7:0] rombyte1 [0:MEMDEPTH]; + reg [7:0] rombyte2 [0:MEMDEPTH]; + reg [7:0] rombyte3 [0:MEMDEPTH]; + + reg [ADDRWIDTH-1:0] addr_r; // registered Address for read access + +// optional simulation RAM_INIT option to suppress 'X' initial contents +`ifdef MEM_INIT + reg [7:0] fileimage [((4<<ADDRWIDTH)-1):0]; + function [31:0] NoX32; input [31:0] n; NoX32 = (((^n) === 1'bx) ? 32'h0 : n); endfunction + integer fd; // file descriptor for file output + integer i; +initial + begin + for (i=0; i<= MEMDEPTH; i=i+1) begin + rombyte0[i] <= 8'he5; + rombyte1[i] <= 8'he5; + rombyte2[i] <= 8'he5; + rombyte3[i] <= 8'he5; + end + if (filename != "") begin + $readmemh(filename, fileimage); + for (i = 0; i <= MEMDEPTH; i=i+1) begin + rombyte0[i] <= fileimage[(i<<2)+0]; + rombyte1[i] <= fileimage[(i<<2)+1]; + rombyte2[i] <= fileimage[(i<<2)+2]; + rombyte3[i] <= fileimage[(i<<2)+3]; + end + end + if (romgen != 0) + begin + fd = $fopen(romgenfile); + if(fd == 0) begin + $display("rom32gen: Error, zero returned in response to $fopen\n"); + end + else begin + $display(fd,"rom32gen: Generating output file\n"); + $fwrite(fd,"module bootrom (\n"); + $fwrite(fd," input wire CLK,\n"); + $fwrite(fd," input wire EN,\n"); + $fwrite(fd," input wire [%0d:2] ADDR,\n", ADDRWIDTH+1); + $fwrite(fd," output reg [31:0] RDATA );\n"); + $fwrite(fd,"reg [%0d:2] addr_r;\n", ADDRWIDTH+1); + $fwrite(fd,"always @(posedge CLK) if (EN) addr_r <= ADDR;\n"); + $fwrite(fd,"always @(addr_r)"); + $fwrite(fd," case(addr_r[%0d:2]) \n", ADDRWIDTH+1); + for (i = 0; i < 4 << (ADDRWIDTH); i=i+4) + $fwrite(fd," %2d'h%2x : RDATA <= 32'h%8x; // 0x%04x\n", ADDRWIDTH, i>>2, NoX32({fileimage[i+3],fileimage[i+2],fileimage[i+1],fileimage[i+0]}), i ); + $fwrite(fd," default : RDATA <=32'h0;\n"); + $fwrite(fd," endcase\n"); + $fwrite(fd,"endmodule\n"); + $fclose(fd); + end + end + end +`endif + +// synchonous address and control + + always @(posedge CLK) // update on any byte lane read + if (SEL) + addr_r <= ADDR[ADDRWIDTH-1:0]; + + assign RDATA = {rombyte3[addr_r],rombyte2[addr_r],rombyte1[addr_r],rombyte0[addr_r]}; + +endmodule diff --git a/GLIB/pads/verilog/GLIB_PADLIB.v b/GLIB/pads/verilog/GLIB_PADLIB.v new file mode 100755 index 0000000000000000000000000000000000000000..8ac1ac4b760a7af4a9954c058a782ed8834abb0f --- /dev/null +++ b/GLIB/pads/verilog/GLIB_PADLIB.v @@ -0,0 +1,146 @@ +// GLIB_PADLIB.v +//----------------------------------------------------------------------------- +// The confidential and proprietary information contained in this file may +// only be used by a person authorised under and to the extent permitted +// by a subsisting licensing agreement from ARM Limited. +// +// (C) COPYRIGHT 2009-2010 ARM Limited. +// ALL RIGHTS RESERVED +// +// This entire notice must be reproduced on all copies of this file +// and copies of this file may only be made by a person if such person is +// permitted to do so under the terms of a subsisting license agreement +// from ARM Limited. +// +// Revision : $Revision: $ +// +// Release Information : $ $ +//----------------------------------------------------------------------------- + +module PAD_INOUT8MA_NOE ( + // Inouts + PAD, + // Outputs + O, + // Inputs + I, + NOE + ); + inout PAD; + output I; + input O; + input NOE; + +`ifdef BEHAVIORAL_PADS + assign I = PAD; + assign PAD = ~NOE ? O : 1'bz; +`else + bufif1 #2 (PAD, O, ~NOE); + buf #1 (I, PAD); + always @(PAD) + begin + if (($countdrivers(PAD) > 1) && (PAD === 1'bx)) + $display("%t ++BUS CONFLICT++ : %m", $realtime); + end +`endif // ifdef BEHAVIORAL_PADS +endmodule // PAD_INOUT8MA_NOE + +module PAD_INOUT8MA_OE ( + // Inouts + PAD, + // Outputs + O, + // Inputs + I, + OE + ); + inout PAD; + output I; + input O; + input OE; +`ifdef BEHAVIORAL_PADS + assign I = PAD; + assign PAD = OE ? O : 1'bz; +`else + bufif1 #2 (PAD, O, OE); + buf #1 (I, PAD); + + always @(PAD) + begin + if (($countdrivers(PAD) > 1) && (PAD === 1'bx)) + $display("%t ++BUS CONFLICT++ : %m", $realtime); + end +`endif // ifdef BEHAVIORAL_PADS +endmodule // PAD_INOUT8MA_OE + +module PAD_VDDIO ( + PAD + ); + inout PAD; +endmodule // PAD_VDDIO + +module PAD_VSSIO ( + PAD + ); + inout PAD; +endmodule // PAD_VSSSIO + +// core logic supply rails (1V0, 0V) +module PAD_VDDSOC ( + PAD + ); + inout PAD; +endmodule // PAD_VDDSOC + +module PAD_VSS ( + PAD + ); + inout PAD; +endmodule // PAD_VSS + +// VDDISOL +module PAD_ANALOG ( + PAD + ); + inout PAD; +endmodule // PAD_ANALOG + +`ifdef TSMC_PADS + +// VDDSOC +module PVDD1CDG ( + inout wire VDD + ); +endmodule // PVDD1CDG + +//VDDIO +module PVDD2CDG ( + inout wire VDDPST + ); +endmodule // PVDD2CDG + +module PVDD2POC ( + inout wire VDDPST + ); +endmodule // PVDD2CDG + +module PVSS3CDG ( + inout wire VSS + ); +endmodule // PVSS3CDG + +// VDDISOL +module PVDD1ANA ( + inout wire AVDD + ); +endmodule // PVDD1ANA + + +module PCORNER ( ); endmodule +module PFILLER20 ( ); endmodule +module PFILLER1 ( ); endmodule +module PFILLER0005 ( ); endmodule + +module PAD60LU ( ); endmodule + +`endif