From b3b93e150d875b3774e71efc68f48ff716930c7f Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Wed, 16 Dec 2020 10:48:33 -0600 Subject: [PATCH] verilog: 32-bit (FFbbggrr) rgb output, testing w/ Silice --- doc/notes.txt | 1 + presets/verilog/copperbars.ice | 102 + presets/verilog/font_cp437_8x8.ice | 259 + presets/verilog/life.ice | 125 + presets/verilog/ntsc.ice | 80 + presets/verilog/rototexture.ice | 141 + presets/verilog/skeleton.silice | 83 + presets/verilog/test_pattern.ice | 81 + presets/verilog/tile.tga | Bin 0 -> 3090 bytes src/ide/project.ts | 7 +- src/ide/ui.ts | 1 + src/ide/waveform.ts | 2 +- src/platform/verilog.ts | 25 +- src/worker/fs/fsSilice.data | 6952 +++++++++++++++++++++++++ src/worker/fs/fsSilice.js | 213 + src/worker/fs/fsSilice.js.metadata | 1 + src/worker/lib/verilog/8bitworkshop.v | 60 + src/worker/wasm/silice.js | 21 + src/worker/wasm/silice.wasm | Bin 0 -> 2099920 bytes src/worker/workermain.ts | 62 +- 20 files changed, 8204 insertions(+), 12 deletions(-) create mode 100644 presets/verilog/copperbars.ice create mode 100644 presets/verilog/font_cp437_8x8.ice create mode 100644 presets/verilog/life.ice create mode 100755 presets/verilog/ntsc.ice create mode 100644 presets/verilog/rototexture.ice create mode 100644 presets/verilog/skeleton.silice create mode 100644 presets/verilog/test_pattern.ice create mode 100755 presets/verilog/tile.tga create mode 100644 src/worker/fs/fsSilice.data create mode 100644 src/worker/fs/fsSilice.js create mode 100644 src/worker/fs/fsSilice.js.metadata create mode 100755 src/worker/lib/verilog/8bitworkshop.v create mode 100644 src/worker/wasm/silice.js create mode 100755 src/worker/wasm/silice.wasm diff --git a/doc/notes.txt b/doc/notes.txt index c887ce72..eb3459c6 100644 --- a/doc/notes.txt +++ b/doc/notes.txt @@ -195,6 +195,7 @@ TODO: - don't include start/end line on platforms w/o raster timing - BIOS symbols - show current tool for file +- download non-text incbin source file Probing - probe log doesn't start @ reset diff --git a/presets/verilog/copperbars.ice b/presets/verilog/copperbars.ice new file mode 100644 index 00000000..4098f7f7 --- /dev/null +++ b/presets/verilog/copperbars.ice @@ -0,0 +1,102 @@ + + +// ------------------------- + +$include('ntsc.ice') + +// ------------------------- + +algorithm frame_display( + input uint10 pix_x, + input uint10 pix_y, + input uint1 pix_active, + input uint1 pix_vblank, + output! uint$color_depth$ pix_r, + output! uint$color_depth$ pix_g, + output! uint$color_depth$ pix_b +) { + + uint7 wave[64] = { +$$for i=0,63 do + $math.floor(127.0 * (0.5+0.5*math.cos(math.pi + 2*math.pi*i/63)))$, +$$end + }; + + uint$color_depth$ v = 0; + uint6 frame = 0; + int9 pos[4] = {0,0,0,0}; + + pix_r := 0; pix_g := 0; pix_b := 0; + // ---------- show time! + while (1) { + + // display frame + while (pix_vblank == 0) { + if (pix_active) { + 4x { + if (pix_y + 20 > pos[__id] && pix_y < pos[__id] + 20) { + v = ((wave[pix_y-pos[__id] + 32]>>1) * (__id+5)) >> 3; + pix_r = v*4; + pix_g = v*3; + pix_b = v*2; + } + } + } + } + // prepare next + frame = frame + 1; + 4x { + pos[__id] = $240 - 127$ + (wave[(frame + (__id << 3)) & 63] << 1); + } + // wait for sync + while (pix_vblank == 1) {} + } +} + +// ------------------------- + +algorithm main( + output! uint$color_depth$ video_r, + output! uint$color_depth$ video_g, + output! uint$color_depth$ video_b, + output! uint1 video_hs, + output! uint1 video_vs +) +<@clock,!reset> +{ + + uint1 active = 0; + uint1 vblank = 0; + uint10 pix_x = 0; + uint10 pix_y = 0; + + ntsc ntsc_driver ( + ntsc_hs :> video_hs, + ntsc_vs :> video_vs, + active :> active, + vblank :> vblank, + ntsc_x :> pix_x, + ntsc_y :> pix_y + ); + + frame_display display ( + pix_x <: pix_x, + pix_y <: pix_y, + pix_active <: active, + pix_vblank <: vblank, + pix_r :> video_r, + pix_g :> video_g, + pix_b :> video_b + ); + + uint8 frame = 0; + + // forever + while (1) { + + while (vblank == 0) { } + + frame = frame + 1; + + } +} diff --git a/presets/verilog/font_cp437_8x8.ice b/presets/verilog/font_cp437_8x8.ice new file mode 100644 index 00000000..97550575 --- /dev/null +++ b/presets/verilog/font_cp437_8x8.ice @@ -0,0 +1,259 @@ + +brom uint8 font_cp437_8x8[2048] = { +8h00,8h00,8h00,8h00,8h00,8h00,8h00,8h00, //0 +8h7e,8h81,8ha5,8h81,8hbd,8h99,8h81,8h7e, //1 +8h7e,8hff,8hdb,8hff,8hc3,8he7,8hff,8h7e, //2 +8h6c,8hfe,8hfe,8hfe,8h7c,8h38,8h10,8h00, //3 +8h10,8h38,8h7c,8hfe,8h7c,8h38,8h10,8h00, //4 +8h38,8h7c,8h38,8hfe,8hfe,8hd6,8h10,8h38, //5 +8h10,8h10,8h38,8h7c,8hfe,8h7c,8h10,8h38, //6 +8h00,8h00,8h18,8h3c,8h3c,8h18,8h00,8h00, //7 +8hff,8hff,8he7,8hc3,8hc3,8he7,8hff,8hff, //8 +8h00,8h3c,8h66,8h42,8h42,8h66,8h3c,8h00, //9 +8hff,8hc3,8h99,8hbd,8hbd,8h99,8hc3,8hff, //10 +8h0f,8h07,8h0f,8h7d,8hcc,8hcc,8hcc,8h78, //11 +8h3c,8h66,8h66,8h66,8h3c,8h18,8h7e,8h18, //12 +8h3f,8h33,8h3f,8h30,8h30,8h70,8hf0,8he0, //13 +8h7f,8h63,8h7f,8h63,8h63,8h67,8he6,8hc0, //14 +8h99,8h5a,8h3c,8he7,8he7,8h3c,8h5a,8h99, //15 +8h80,8he0,8hf8,8hfe,8hf8,8he0,8h80,8h00, //16 +8h02,8h0e,8h3e,8hfe,8h3e,8h0e,8h02,8h00, //17 +8h18,8h3c,8h7e,8h18,8h18,8h7e,8h3c,8h18, //18 +8h66,8h66,8h66,8h66,8h66,8h00,8h66,8h00, //19 +8h7f,8hdb,8hdb,8h7b,8h1b,8h1b,8h1b,8h00, //20 +8h7e,8hc3,8h78,8hcc,8hcc,8h78,8h8c,8hf8, //21 +8h00,8h00,8h00,8h00,8h7e,8h7e,8h7e,8h00, //22 +8h18,8h3c,8h7e,8h18,8h7e,8h3c,8h18,8hff, //23 +8h18,8h3c,8h7e,8h18,8h18,8h18,8h18,8h00, //24 +8h18,8h18,8h18,8h18,8h7e,8h3c,8h18,8h00, //25 +8h00,8h18,8h0c,8hfe,8h0c,8h18,8h00,8h00, //26 +8h00,8h30,8h60,8hfe,8h60,8h30,8h00,8h00, //27 +8h00,8h00,8hc0,8hc0,8hc0,8hfe,8h00,8h00, //28 +8h00,8h24,8h66,8hff,8h66,8h24,8h00,8h00, //29 +8h00,8h18,8h3c,8h7e,8hff,8hff,8h00,8h00, //30 +8h00,8hff,8hff,8h7e,8h3c,8h18,8h00,8h00, //31 +8h00,8h00,8h00,8h00,8h00,8h00,8h00,8h00, //32 +8h30,8h78,8h78,8h30,8h30,8h00,8h30,8h00, //33 +8h6c,8h6c,8h6c,8h00,8h00,8h00,8h00,8h00, //34 +8h6c,8h6c,8hfe,8h6c,8hfe,8h6c,8h6c,8h00, //35 +8h30,8h7c,8hc0,8h78,8h0c,8hf8,8h30,8h00, //36 +8h00,8hc6,8hcc,8h18,8h30,8h66,8hc6,8h00, //37 +8h38,8h6c,8h38,8h76,8hdc,8hcc,8h76,8h00, //38 +8h60,8h60,8hc0,8h00,8h00,8h00,8h00,8h00, //39 +8h18,8h30,8h60,8h60,8h60,8h30,8h18,8h00, //40 +8h60,8h30,8h18,8h18,8h18,8h30,8h60,8h00, //41 +8h00,8h66,8h3c,8hff,8h3c,8h66,8h00,8h00, //42 +8h00,8h30,8h30,8hfc,8h30,8h30,8h00,8h00, //43 +8h00,8h00,8h00,8h00,8h00,8h70,8h30,8h60, //44 +8h00,8h00,8h00,8hfc,8h00,8h00,8h00,8h00, //45 +8h00,8h00,8h00,8h00,8h00,8h30,8h30,8h00, //46 +8h06,8h0c,8h18,8h30,8h60,8hc0,8h80,8h00, //47 +8h78,8hcc,8hdc,8hfc,8hec,8hcc,8h78,8h00, //48 +8h30,8hf0,8h30,8h30,8h30,8h30,8hfc,8h00, //49 +8h78,8hcc,8h0c,8h38,8h60,8hcc,8hfc,8h00, //50 +8h78,8hcc,8h0c,8h38,8h0c,8hcc,8h78,8h00, //51 +8h1c,8h3c,8h6c,8hcc,8hfe,8h0c,8h0c,8h00, //52 +8hfc,8hc0,8hf8,8h0c,8h0c,8hcc,8h78,8h00, //53 +8h38,8h60,8hc0,8hf8,8hcc,8hcc,8h78,8h00, //54 +8hfc,8hcc,8h0c,8h18,8h30,8h60,8h60,8h00, //55 +8h78,8hcc,8hcc,8h78,8hcc,8hcc,8h78,8h00, //56 +8h78,8hcc,8hcc,8h7c,8h0c,8h18,8h70,8h00, //57 +8h00,8h00,8h30,8h30,8h00,8h30,8h30,8h00, //58 +8h00,8h00,8h30,8h30,8h00,8h70,8h30,8h60, //59 +8h18,8h30,8h60,8hc0,8h60,8h30,8h18,8h00, //60 +8h00,8h00,8hfc,8h00,8hfc,8h00,8h00,8h00, //61 +8h60,8h30,8h18,8h0c,8h18,8h30,8h60,8h00, //62 +8h78,8hcc,8h0c,8h18,8h30,8h00,8h30,8h00, //63 +8h7c,8hc6,8hde,8hde,8hde,8hc0,8h78,8h00, //64 +8h30,8h78,8hcc,8hcc,8hfc,8hcc,8hcc,8h00, //65 +8hfc,8h66,8h66,8h7c,8h66,8h66,8hfc,8h00, //66 +8h3c,8h66,8hc0,8hc0,8hc0,8h66,8h3c,8h00, //67 +8hfc,8h6c,8h66,8h66,8h66,8h6c,8hfc,8h00, //68 +8hfe,8h62,8h68,8h78,8h68,8h62,8hfe,8h00, //69 +8hfe,8h62,8h68,8h78,8h68,8h60,8hf0,8h00, //70 +8h3c,8h66,8hc0,8hc0,8hce,8h66,8h3e,8h00, //71 +8hcc,8hcc,8hcc,8hfc,8hcc,8hcc,8hcc,8h00, //72 +8h78,8h30,8h30,8h30,8h30,8h30,8h78,8h00, //73 +8h1e,8h0c,8h0c,8h0c,8hcc,8hcc,8h78,8h00, //74 +8he6,8h66,8h6c,8h78,8h6c,8h66,8he6,8h00, //75 +8hf0,8h60,8h60,8h60,8h62,8h66,8hfe,8h00, //76 +8hc6,8hee,8hfe,8hd6,8hc6,8hc6,8hc6,8h00, //77 +8hc6,8he6,8hf6,8hde,8hce,8hc6,8hc6,8h00, //78 +8h38,8h6c,8hc6,8hc6,8hc6,8h6c,8h38,8h00, //79 +8hfc,8h66,8h66,8h7c,8h60,8h60,8hf0,8h00, //80 +8h78,8hcc,8hcc,8hcc,8hdc,8h78,8h1c,8h00, //81 +8hfc,8h66,8h66,8h7c,8h78,8h6c,8he6,8h00, //82 +8h78,8hcc,8he0,8h38,8h1c,8hcc,8h78,8h00, //83 +8hfc,8hb4,8h30,8h30,8h30,8h30,8h78,8h00, //84 +8hcc,8hcc,8hcc,8hcc,8hcc,8hcc,8hfc,8h00, //85 +8hcc,8hcc,8hcc,8hcc,8hcc,8h78,8h30,8h00, //86 +8hc6,8hc6,8hc6,8hd6,8hfe,8hee,8hc6,8h00, //87 +8hc6,8hc6,8h6c,8h38,8h6c,8hc6,8hc6,8h00, //88 +8hcc,8hcc,8hcc,8h78,8h30,8h30,8h78,8h00, //89 +8hfe,8hcc,8h98,8h30,8h62,8hc6,8hfe,8h00, //90 +8h78,8h60,8h60,8h60,8h60,8h60,8h78,8h00, //91 +8hc0,8h60,8h30,8h18,8h0c,8h06,8h02,8h00, //92 +8h78,8h18,8h18,8h18,8h18,8h18,8h78,8h00, //93 +8h10,8h38,8h6c,8hc6,8h00,8h00,8h00,8h00, //94 +8h00,8h00,8h00,8h00,8h00,8h00,8h00,8hff, //95 +8h30,8h30,8h18,8h00,8h00,8h00,8h00,8h00, //96 +8h00,8h00,8h78,8h0c,8h7c,8hcc,8h76,8h00, //97 +8he0,8h60,8h7c,8h66,8h66,8h66,8hbc,8h00, //98 +8h00,8h00,8h78,8hcc,8hc0,8hcc,8h78,8h00, //99 +8h1c,8h0c,8h0c,8h7c,8hcc,8hcc,8h76,8h00, //100 +8h00,8h00,8h78,8hcc,8hfc,8hc0,8h78,8h00, //101 +8h38,8h6c,8h60,8hf0,8h60,8h60,8hf0,8h00, //102 +8h00,8h00,8h76,8hcc,8hcc,8h7c,8h0c,8hf8, //103 +8he0,8h60,8h6c,8h76,8h66,8h66,8he6,8h00, //104 +8h30,8h00,8h70,8h30,8h30,8h30,8h78,8h00, //105 +8h18,8h00,8h78,8h18,8h18,8h18,8hd8,8h70, //106 +8he0,8h60,8h66,8h6c,8h78,8h6c,8he6,8h00, //107 +8h70,8h30,8h30,8h30,8h30,8h30,8h78,8h00, //108 +8h00,8h00,8hec,8hfe,8hd6,8hc6,8hc6,8h00, //109 +8h00,8h00,8hf8,8hcc,8hcc,8hcc,8hcc,8h00, //110 +8h00,8h00,8h78,8hcc,8hcc,8hcc,8h78,8h00, //111 +8h00,8h00,8hdc,8h66,8h66,8h7c,8h60,8hf0, //112 +8h00,8h00,8h76,8hcc,8hcc,8h7c,8h0c,8h1e, //113 +8h00,8h00,8hd8,8h6c,8h6c,8h60,8hf0,8h00, //114 +8h00,8h00,8h7c,8hc0,8h78,8h0c,8hf8,8h00, //115 +8h10,8h30,8h7c,8h30,8h30,8h34,8h18,8h00, //116 +8h00,8h00,8hcc,8hcc,8hcc,8hcc,8h76,8h00, //117 +8h00,8h00,8hcc,8hcc,8hcc,8h78,8h30,8h00, //118 +8h00,8h00,8hc6,8hc6,8hd6,8hfe,8h6c,8h00, //119 +8h00,8h00,8hc6,8h6c,8h38,8h6c,8hc6,8h00, //120 +8h00,8h00,8hcc,8hcc,8hcc,8h7c,8h0c,8hf8, //121 +8h00,8h00,8hfc,8h98,8h30,8h64,8hfc,8h00, //122 +8h1c,8h30,8h30,8he0,8h30,8h30,8h1c,8h00, //123 +8h18,8h18,8h18,8h00,8h18,8h18,8h18,8h00, //124 +8he0,8h30,8h30,8h1c,8h30,8h30,8he0,8h00, //125 +8h76,8hdc,8h00,8h00,8h00,8h00,8h00,8h00, //126 +8h10,8h38,8h6c,8hc6,8hc6,8hc6,8hfe,8h00, //127 +8h78,8hcc,8hc0,8hcc,8h78,8h18,8h0c,8h78, //128 +8h00,8hcc,8h00,8hcc,8hcc,8hcc,8h7e,8h00, //129 +8h1c,8h00,8h78,8hcc,8hfc,8hc0,8h78,8h00, //130 +8h7e,8hc3,8h3c,8h06,8h3e,8h66,8h3f,8h00, //131 +8hcc,8h00,8h78,8h0c,8h7c,8hcc,8h7e,8h00, //132 +8he0,8h00,8h78,8h0c,8h7c,8hcc,8h7e,8h00, //133 +8h30,8h30,8h78,8h0c,8h7c,8hcc,8h7e,8h00, //134 +8h00,8h00,8h7c,8hc0,8hc0,8h7c,8h06,8h3c, //135 +8h7e,8hc3,8h3c,8h66,8h7e,8h60,8h3c,8h00, //136 +8hcc,8h00,8h78,8hcc,8hfc,8hc0,8h78,8h00, //137 +8he0,8h00,8h78,8hcc,8hfc,8hc0,8h78,8h00, //138 +8hcc,8h00,8h70,8h30,8h30,8h30,8h78,8h00, //139 +8h7c,8hc6,8h38,8h18,8h18,8h18,8h3c,8h00, //140 +8he0,8h00,8h70,8h30,8h30,8h30,8h78,8h00, //141 +8hcc,8h30,8h78,8hcc,8hcc,8hfc,8hcc,8h00, //142 +8h30,8h30,8h00,8h78,8hcc,8hfc,8hcc,8h00, //143 +8h1c,8h00,8hfc,8h60,8h78,8h60,8hfc,8h00, //144 +8h00,8h00,8h7f,8h0c,8h7f,8hcc,8h7f,8h00, //145 +8h3e,8h6c,8hcc,8hfe,8hcc,8hcc,8hce,8h00, //146 +8h78,8hcc,8h00,8h78,8hcc,8hcc,8h78,8h00, //147 +8h00,8hcc,8h00,8h78,8hcc,8hcc,8h78,8h00, //148 +8h00,8he0,8h00,8h78,8hcc,8hcc,8h78,8h00, //149 +8h78,8hcc,8h00,8hcc,8hcc,8hcc,8h7e,8h00, //150 +8h00,8he0,8h00,8hcc,8hcc,8hcc,8h7e,8h00, //151 +8h00,8hcc,8h00,8hcc,8hcc,8hfc,8h0c,8hf8, //152 +8hc6,8h38,8h7c,8hc6,8hc6,8h7c,8h38,8h00, //153 +8hcc,8h00,8hcc,8hcc,8hcc,8hcc,8h78,8h00, //154 +8h18,8h18,8h7e,8hc0,8hc0,8h7e,8h18,8h18, //155 +8h38,8h6c,8h64,8hf0,8h60,8he6,8hfc,8h00, //156 +8hcc,8hcc,8h78,8hfc,8h30,8hfc,8h30,8h00, //157 +8hf0,8hd8,8hd8,8hf4,8hcc,8hde,8hcc,8h0e, //158 +8h0e,8h1b,8h18,8h7e,8h18,8h18,8hd8,8h70, //159 +8h1c,8h00,8h78,8h0c,8h7c,8hcc,8h7e,8h00, //160 +8h38,8h00,8h70,8h30,8h30,8h30,8h78,8h00, //161 +8h00,8h1c,8h00,8h78,8hcc,8hcc,8h78,8h00, //162 +8h00,8h1c,8h00,8hcc,8hcc,8hcc,8h7e,8h00, //163 +8h00,8hf8,8h00,8hf8,8hcc,8hcc,8hcc,8h00, //164 +8hfc,8h00,8hcc,8hec,8hfc,8hdc,8hcc,8h00, //165 +8h3c,8h6c,8h6c,8h3e,8h00,8h7e,8h00,8h00, //166 +8h3c,8h66,8h66,8h3c,8h00,8h7e,8h00,8h00, //167 +8h30,8h00,8h30,8h60,8hc0,8hcc,8h78,8h00, //168 +8h00,8h00,8h00,8hfc,8hc0,8hc0,8h00,8h00, //169 +8h00,8h00,8h00,8hfc,8h0c,8h0c,8h00,8h00, //170 +8hc6,8hcc,8hd8,8h3e,8h63,8hce,8h98,8h1f, //171 +8hc6,8hcc,8hd8,8hf3,8h67,8hcf,8h9f,8h03, //172 +8h00,8h18,8h00,8h18,8h18,8h3c,8h3c,8h18, //173 +8h00,8h33,8h66,8hcc,8h66,8h33,8h00,8h00, //174 +8h00,8hcc,8h66,8h33,8h66,8hcc,8h00,8h00, //175 +8h22,8h88,8h22,8h88,8h22,8h88,8h22,8h88, //176 +8h55,8haa,8h55,8haa,8h55,8haa,8h55,8haa, //177 +8hdd,8h77,8hdd,8h77,8hdd,8h77,8hdd,8h77, //178 +8h18,8h18,8h18,8h18,8h18,8h18,8h18,8h18, //179 +8h18,8h18,8h18,8h18,8hf8,8h18,8h18,8h18, //180 +8h18,8h18,8hf8,8h18,8hf8,8h18,8h18,8h18, //181 +8h36,8h36,8h36,8h36,8hf6,8h36,8h36,8h36, //182 +8h00,8h00,8h00,8h00,8hfe,8h36,8h36,8h36, //183 +8h00,8h00,8hf8,8h18,8hf8,8h18,8h18,8h18, //184 +8h36,8h36,8hf6,8h06,8hf6,8h36,8h36,8h36, //185 +8h36,8h36,8h36,8h36,8h36,8h36,8h36,8h36, //186 +8h00,8h00,8hfe,8h06,8hf6,8h36,8h36,8h36, //187 +8h36,8h36,8hf6,8h06,8hfe,8h00,8h00,8h00, //188 +8h36,8h36,8h36,8h36,8hfe,8h00,8h00,8h00, //189 +8h18,8h18,8hf8,8h18,8hf8,8h00,8h00,8h00, //190 +8h00,8h00,8h00,8h00,8hf8,8h18,8h18,8h18, //191 +8h18,8h18,8h18,8h18,8h1f,8h00,8h00,8h00, //192 +8h18,8h18,8h18,8h18,8hff,8h00,8h00,8h00, //193 +8h00,8h00,8h00,8h00,8hff,8h18,8h18,8h18, //194 +8h18,8h18,8h18,8h18,8h1f,8h18,8h18,8h18, //195 +8h00,8h00,8h00,8h00,8hff,8h00,8h00,8h00, //196 +8h18,8h18,8h18,8h18,8hff,8h18,8h18,8h18, //197 +8h18,8h18,8h1f,8h18,8h1f,8h18,8h18,8h18, //198 +8h36,8h36,8h36,8h36,8h37,8h36,8h36,8h36, //199 +8h36,8h36,8h37,8h30,8h3f,8h00,8h00,8h00, //200 +8h00,8h00,8h3f,8h30,8h37,8h36,8h36,8h36, //201 +8h36,8h36,8hf7,8h00,8hff,8h00,8h00,8h00, //202 +8h00,8h00,8hff,8h00,8hf7,8h36,8h36,8h36, //203 +8h36,8h36,8h37,8h30,8h37,8h36,8h36,8h36, //204 +8h00,8h00,8hff,8h00,8hff,8h00,8h00,8h00, //205 +8h36,8h36,8hf7,8h00,8hf7,8h36,8h36,8h36, //206 +8h18,8h18,8hff,8h00,8hff,8h00,8h00,8h00, //207 +8h36,8h36,8h36,8h36,8hff,8h00,8h00,8h00, //208 +8h00,8h00,8hff,8h00,8hff,8h18,8h18,8h18, //209 +8h00,8h00,8h00,8h00,8hff,8h36,8h36,8h36, //210 +8h36,8h36,8h36,8h36,8h3f,8h00,8h00,8h00, //211 +8h18,8h18,8h1f,8h18,8h1f,8h00,8h00,8h00, //212 +8h00,8h00,8h1f,8h18,8h1f,8h18,8h18,8h18, //213 +8h00,8h00,8h00,8h00,8h3f,8h36,8h36,8h36, //214 +8h36,8h36,8h36,8h36,8hf7,8h36,8h36,8h36, //215 +8h18,8h18,8hff,8h00,8hff,8h18,8h18,8h18, //216 +8h18,8h18,8h18,8h18,8hf8,8h00,8h00,8h00, //217 +8h00,8h00,8h00,8h00,8h1f,8h18,8h18,8h18, //218 +8hff,8hff,8hff,8hff,8hff,8hff,8hff,8hff, //219 +8h00,8h00,8h00,8h00,8hff,8hff,8hff,8hff, //220 +8hf0,8hf0,8hf0,8hf0,8hf0,8hf0,8hf0,8hf0, //221 +8h0f,8h0f,8h0f,8h0f,8h0f,8h0f,8h0f,8h0f, //222 +8hff,8hff,8hff,8hff,8h00,8h00,8h00,8h00, //223 +8h00,8h00,8h76,8hdc,8hc8,8hdc,8h76,8h00, //224 +8h00,8h78,8hcc,8hf8,8hcc,8hf8,8hc0,8hc0, //225 +8h00,8hfe,8hc6,8hc0,8hc0,8hc0,8hc0,8h00, //226 +8h00,8hfe,8h6c,8h6c,8h6c,8h6c,8h6c,8h00, //227 +8hfe,8h66,8h30,8h18,8h30,8h66,8hfe,8h00, //228 +8h00,8h00,8h7e,8hcc,8hcc,8hcc,8h78,8h00, //229 +8h00,8h66,8h66,8h66,8h66,8h7c,8h60,8hc0, //230 +8h00,8h76,8hdc,8h18,8h18,8h18,8h18,8h00, //231 +8hfc,8h30,8h78,8hcc,8hcc,8h78,8h30,8hfc, //232 +8h38,8h6c,8hc6,8hfe,8hc6,8h6c,8h38,8h00, //233 +8h38,8h6c,8hc6,8hc6,8h6c,8h6c,8hee,8h00, //234 +8h1c,8h30,8h18,8h7c,8hcc,8hcc,8h78,8h00, //235 +8h00,8h00,8h7e,8hdb,8hdb,8h7e,8h00,8h00, //236 +8h06,8h0c,8h7e,8hdb,8hdb,8h7e,8h60,8hc0, //237 +8h3c,8h60,8hc0,8hfc,8hc0,8h60,8h3c,8h00, //238 +8h78,8hcc,8hcc,8hcc,8hcc,8hcc,8hcc,8h00, //239 +8h00,8hfc,8h00,8hfc,8h00,8hfc,8h00,8h00, //240 +8h30,8h30,8hfc,8h30,8h30,8h00,8hfc,8h00, //241 +8h60,8h30,8h18,8h30,8h60,8h00,8hfc,8h00, //242 +8h18,8h30,8h60,8h30,8h18,8h00,8hfc,8h00, //243 +8h0e,8h1b,8h1b,8h18,8h18,8h18,8h18,8h18, //244 +8h18,8h18,8h18,8h18,8h18,8hd8,8hd8,8h70, //245 +8h30,8h30,8h00,8hfc,8h00,8h30,8h30,8h00, //246 +8h00,8h72,8h9c,8h00,8h72,8h9c,8h00,8h00, //247 +8h38,8h6c,8h6c,8h38,8h00,8h00,8h00,8h00, //248 +8h00,8h00,8h00,8h18,8h18,8h00,8h00,8h00, //249 +8h00,8h00,8h00,8h00,8h18,8h00,8h00,8h00, //250 +8h0f,8h0c,8h0c,8h0c,8hec,8h6c,8h3c,8h1c, //251 +8h78,8h6c,8h6c,8h6c,8h6c,8h00,8h00,8h00, //252 +8h78,8h0c,8h38,8h60,8h7c,8h00,8h00,8h00, //253 +8h00,8h00,8h3c,8h3c,8h3c,8h3c,8h00,8h00, //254 +8h00,8h00,8h00,8h00,8h00,8h00,8h00,8h00 //255 +}; diff --git a/presets/verilog/life.ice b/presets/verilog/life.ice new file mode 100644 index 00000000..4922758a --- /dev/null +++ b/presets/verilog/life.ice @@ -0,0 +1,125 @@ + +$include('ntsc.ice') + +// ------------------------- + +algorithm frame_display( + input uint10 pix_x, + input uint10 pix_y, + input uint1 pix_active, + input uint1 pix_vblank, + output! uint$color_depth$ pix_r, + output! uint$color_depth$ pix_g, + output! uint$color_depth$ pix_b +) { + + $include('font_cp437_8x8.ice') + + // 256x256 cells (240 lines used) + dualport_bram uint1 cells[65536] = uninitialized; + // previous 2 rows + dualport_bram uint1 row1[256] = uninitialized; + dualport_bram uint1 row2[256] = uninitialized; + + // 3x3 pixel mask around x/y + uint9 neigh = 0; + + // offsets to X and Y coordinate + uint8 xx := pix_x[0,8]; + uint8 yy := pix_y[0,8]; + uint8 xxm3 := xx - 3; + uint8 xxm1 := xx - 1; + uint8 yym1 := yy - 1; + + // count # of live neigbors (up to 8) + uint3 ncount ::= + neigh[0,1] + neigh[1,1] + neigh[2,1] + + neigh[3,1] + neigh[5,1] + + neigh[6,1] + neigh[7,1] + neigh[8,1]; + + // pixel is set if: + // * 3 live neighbors + // * 2 live neigbors and was already alive + uint1 alive ::= (ncount == 3) || (ncount == 2 && neigh[4,1]); + + // by default r,g,b are set to zero + pix_r := 0; + pix_g := 0; + pix_b := 0; + + // set dual-port block RAM bus addresses (continuously) + row1.addr0 := xx; + row2.addr0 := xx; + cells.addr0 := {yy, xx}; + row1.addr1 := xxm1; + row2.addr1 := xxm1; + cells.addr1 := {yym1, xxm3}; + row1.wenable1 := 1; + row2.wenable1 := 1; + cells.wenable1 = 1; + + // ---------- show time! + while (1) { + // display frame + while (pix_vblank == 0) { + if (pix_active) { + // shift neighbor cells to the left by 1 pixel + // while adding right pix from row1/row2/cells array + neigh = { + neigh[6,2], row1.rdata0, + neigh[3,2], row2.rdata0, + neigh[0,2], cells.rdata0 + }; + // copy alive -> cells -> row2 -> row1 + row1.wdata1 = row2.rdata0; + row2.wdata1 = cells.rdata0; + cells.wdata1 = alive; + // set RGB color based on surroundings + pix_r = ncount * 31; + pix_g = neigh[4,1] * 255; + pix_b = alive * 255; + } + } + } +} + +// ------------------------- + +algorithm main( + output! uint$color_depth$ video_r, + output! uint$color_depth$ video_g, + output! uint$color_depth$ video_b, + output! uint1 video_hs, + output! uint1 video_vs +) +<@clock,!reset> +{ + + uint1 active = 0; + uint1 vblank = 0; + uint10 pix_x = 0; + uint10 pix_y = 0; + + ntsc ntsc_driver ( + ntsc_hs :> video_hs, + ntsc_vs :> video_vs, + active :> active, + vblank :> vblank, + ntsc_x :> pix_x, + ntsc_y :> pix_y + ); + + frame_display display ( + pix_x <: pix_x, + pix_y <: pix_y, + pix_active <: active, + pix_vblank <: vblank, + pix_r :> video_r, + pix_g :> video_g, + pix_b :> video_b + ); + + // forever + while (1) { + } +} diff --git a/presets/verilog/ntsc.ice b/presets/verilog/ntsc.ice new file mode 100755 index 00000000..7c8c2064 --- /dev/null +++ b/presets/verilog/ntsc.ice @@ -0,0 +1,80 @@ +// SL 2019-10 +// +// GNU AFFERO GENERAL PUBLIC LICENSE +// Version 3, 19 November 2007 +// +// A copy of the license full text is included in +// the distribution, please refer to it for details. + +algorithm ntsc( + output! uint1 ntsc_hs, + output! uint1 ntsc_vs, + output! uint1 active, + output! uint1 vblank, + output! uint10 ntsc_x, + output! uint10 ntsc_y +) { + + uint10 H_FRT_PORCH = 7; + uint10 H_SYNCH = 23; + uint10 H_BCK_PORCH = 23; + uint10 H_RES = 256; + + uint10 V_FRT_PORCH = 5; + uint10 V_SYNCH = 3; + uint10 V_BCK_PORCH = 14; + uint10 V_RES = 240; + + uint10 HS_START = 0; + uint10 HS_END = 0; + uint10 HA_START = 0; + uint10 H_END = 0; + + uint10 VS_START = 0; + uint10 VS_END = 0; + uint10 VA_START = 0; + uint10 V_END = 0; + + uint10 xcount = 0; + uint10 ycount = 0; + + HS_START := H_FRT_PORCH; + HS_END := H_FRT_PORCH + H_SYNCH; + HA_START := H_FRT_PORCH + H_SYNCH + H_BCK_PORCH; + H_END := H_FRT_PORCH + H_SYNCH + H_BCK_PORCH + H_RES; + + VS_START := V_FRT_PORCH; + VS_END := V_FRT_PORCH + V_SYNCH; + VA_START := V_FRT_PORCH + V_SYNCH + V_BCK_PORCH; + V_END := V_FRT_PORCH + V_SYNCH + V_BCK_PORCH + V_RES; + + ntsc_hs := ((xcount >= HS_START && xcount < HS_END)); + ntsc_vs := ((ycount >= VS_START && ycount < VS_END)); + + active := (xcount >= HA_START && xcount < H_END) + && (ycount >= VA_START && ycount < V_END); + vblank := (ycount < VA_START); + + xcount = 0; + ycount = 0; + + while (1) { + + ntsc_x = (active) ? xcount - HA_START : 0; + ntsc_y = (vblank) ? 0 : ycount - VA_START; + + if (xcount == H_END-1) { + xcount = 0; + if (ycount == V_END-1) { + ycount = 0; + } else { + ycount = ycount + 1; + } + } else { + xcount = xcount + 1; + } + } + +} + +// ------------------------- diff --git a/presets/verilog/rototexture.ice b/presets/verilog/rototexture.ice new file mode 100644 index 00000000..4ebfcf79 --- /dev/null +++ b/presets/verilog/rototexture.ice @@ -0,0 +1,141 @@ + +$include('ntsc.ice') + +// SL 2020-04-22 +// A rotating texture using BRAM + +// ------------------------- + +algorithm frame_display( + input uint10 pix_x, + input uint10 pix_y, + input uint1 pix_active, + input uint1 pix_vblank, + output! uint$color_depth$ pix_r, + output! uint$color_depth$ pix_g, + output! uint$color_depth$ pix_b +) { + + uint8 frame = 0; + uint8 angle = 0; + int20 u = 0; + int20 v = 0; + int20 cos = 0; + int20 sin = 0; + int20 cornerx = 320; + int20 cornery = 240; + //int20 cornerx = -320; + //int20 cornery = -240; + int20 corneru = 0; + int20 cornerv = 0; + int20 deltau_x = 0; + int20 deltau_y = 0; + int20 deltav_x = 0; + int20 deltav_y = 0; + + brom uint18 tbl[$32*32$] = { +$$write_image_in_table('tile.tga',6) + }; + + brom int10 cosine[256] = { +$$for i=0,255 do + $math.floor(511.0 * math.cos(2*math.pi*i/255))$, +$$end + }; + + pix_r := 0; pix_g := 0; pix_b := 0; + // ---------- show time! + while (1) { + // display frame + while (pix_vblank == 0) { + if (pix_active) { + pix_b = tbl.rdata[0,6]<<2; + pix_g = tbl.rdata[6,6]<<2; + pix_r = tbl.rdata[12,6]<<2; + // update u,v + if (pix_x == 0) { + u = corneru; + v = cornerv; + } else { + if (pix_x == 255) { + corneru = corneru + deltau_y; + cornerv = cornerv + deltav_y; + } else { + u = u + deltau_x; + v = v + deltav_x; + } + } + // tbl bram access + tbl.addr = ((u>>11)&31) + (((v>>11)&31)<<5); + // access during loop (one cycle to go back) + } + } + // prepare next (we are in vblank, there is time) + cosine.addr = frame; + frame = frame + 1; +++: + angle = ((512+cosine.rdata) >> 2); + cosine.addr = angle; +++: // sine bram access + cos = cosine.rdata; + cosine.addr = angle + 64; +++: // sine bram access + sin = cosine.rdata; + // prepare scanline with mapping + corneru = - ((cornerx * cos) - (cornery * sin)); + cornerv = - ((cornerx * sin) + (cornery * cos)); + //corneru = ((cornerx * cos) - (cornery * sin)); + //cornerv = ((cornerx * sin) + (cornery * cos)); + deltau_x = cos; + deltau_y = - sin; + deltav_x = sin; + deltav_y = cos; + u = corneru; + v = cornerv; + // wait for sync + while (pix_vblank == 1) {} + } + +} + + +// ------------------------- + +algorithm main( + output! uint$color_depth$ video_r, + output! uint$color_depth$ video_g, + output! uint$color_depth$ video_b, + output! uint1 video_hs, + output! uint1 video_vs +) +<@clock,!reset> +{ + + uint1 active = 0; + uint1 vblank = 0; + uint10 pix_x = 0; + uint10 pix_y = 0; + + ntsc ntsc_driver ( + ntsc_hs :> video_hs, + ntsc_vs :> video_vs, + active :> active, + vblank :> vblank, + ntsc_x :> pix_x, + ntsc_y :> pix_y + ); + + frame_display display ( + pix_x <: pix_x, + pix_y <: pix_y, + pix_active <: active, + pix_vblank <: vblank, + pix_r :> video_r, + pix_g :> video_g, + pix_b :> video_b + ); + + // forever + while (1) { + } +} diff --git a/presets/verilog/skeleton.silice b/presets/verilog/skeleton.silice new file mode 100644 index 00000000..72264962 --- /dev/null +++ b/presets/verilog/skeleton.silice @@ -0,0 +1,83 @@ + +// ------------------------- + +$include('ntsc.ice') + +// ------------------------- + +algorithm frame_display( + input uint10 pix_x, + input uint10 pix_y, + input uint1 pix_active, + input uint1 pix_vblank, + output! uint$color_depth$ pix_r, + output! uint$color_depth$ pix_g, + output! uint$color_depth$ pix_b +) { + + uint8 frame = 0; + + // by default r,g,b are set to zero + pix_r := 0; + pix_g := 0; + pix_b := 0; + + // ---------- show time! + while (1) { + // display frame + while (pix_vblank == 0) { + if (pix_active) { + pix_b = frame << 2; + pix_g = pix_y[0,$color_depth$]; + pix_r = pix_x[0,$color_depth$]; + } + } + while (pix_vblank == 1) {} // wait for sync + frame = frame + 1; + } +} + +// ------------------------- + +algorithm main( + // NTSC + output! uint$color_depth$ video_r, + output! uint$color_depth$ video_g, + output! uint$color_depth$ video_b, + output! uint1 video_hs, + output! uint1 video_vs +) +<@clock,!reset> +{ + + uint1 active = 0; + uint1 vblank = 0; + uint10 pix_x = 0; + uint10 pix_y = 0; + + ntsc ntsc_driver ( + ntsc_hs :> video_hs, + ntsc_vs :> video_vs, + active :> active, + vblank :> vblank, + ntsc_x :> pix_x, + ntsc_y :> pix_y + ); + + frame_display display ( + pix_x <: pix_x, + pix_y <: pix_y, + pix_active <: active, + pix_vblank <: vblank, + pix_r :> video_r, + pix_g :> video_g, + pix_b :> video_b + ); + + // forever + while (1) { + + while (vblank == 0) { } + + } +} diff --git a/presets/verilog/test_pattern.ice b/presets/verilog/test_pattern.ice new file mode 100644 index 00000000..9b1132a0 --- /dev/null +++ b/presets/verilog/test_pattern.ice @@ -0,0 +1,81 @@ + +// ------------------------- + +$include('ntsc.ice') + +// ------------------------- + +algorithm frame_display( + input uint10 pix_x, + input uint10 pix_y, + input uint1 pix_active, + input uint1 pix_vblank, + output! uint$color_depth$ pix_r, + output! uint$color_depth$ pix_g, + output! uint$color_depth$ pix_b +) { + // by default r,g,b are set to zero + pix_r := 0; + pix_g := 0; + pix_b := 0; + // ---------- show time! + while (1) { + // display frame + while (pix_vblank == 0) { + if (pix_active) { + pix_b = pix_x[0,$color_depth$]<<3; + pix_g = pix_y[0,$color_depth$]<<2; + pix_r = pix_x[0,$color_depth$]<<1; + } + } + while (pix_vblank == 1) {} // wait for sync + } +} + +// ------------------------- + +algorithm main( + output! uint$color_depth$ video_r, + output! uint$color_depth$ video_g, + output! uint$color_depth$ video_b, + output! uint1 video_hs, + output! uint1 video_vs +) +<@clock,!reset> +{ + + uint1 active = 0; + uint1 vblank = 0; + uint10 pix_x = 0; + uint10 pix_y = 0; + + ntsc ntsc_driver ( + ntsc_hs :> video_hs, + ntsc_vs :> video_vs, + active :> active, + vblank :> vblank, + ntsc_x :> pix_x, + ntsc_y :> pix_y + ); + + frame_display display ( + pix_x <: pix_x, + pix_y <: pix_y, + pix_active <: active, + pix_vblank <: vblank, + pix_r :> video_r, + pix_g :> video_g, + pix_b :> video_b + ); + + uint8 frame = 0; + + // forever + while (1) { + + while (vblank == 0) { } + + frame = frame + 1; + + } +} diff --git a/presets/verilog/tile.tga b/presets/verilog/tile.tga new file mode 100755 index 0000000000000000000000000000000000000000..483edeaacd417f05be6bb3facc3d55cf586aeda3 GIT binary patch literal 3090 zcmZ|QF^*(K5QO1woObZW0Rw4p1{V32^{0FgXCi<_O%6ulrwOi&?Qs zrJ^DuBlFdJJ$t!)aQXM&^X2*S(ew3_&+c)1dJBe6Ce89n{|Cm;?TfFkB8T7pzW(&* z_1jQdpMrJEIz6j;N{I7&5 z#<9F9jj)d^n!~#IZ(`Ny#}kKhCMX;OzkGf-x4*Y6i1E5M#gVxHbcxNP|NYA=hcc7y zA#=RI(AQ{CBW&LE+~nKSU9(w^LSq>i&O{bfUmopg+5vC>wVVKU`MsJh&?5sgu^~+l zyGLe7&}DikSdfX@E6GK7ev-O4?*^2ZCjj`@BD+jHe`I?iR|V+B$b7nI`)p{+265Yw ze-5X3UFpvw%-sGxZ!00E%*}{MO5ohT4a?iVb|ht2%0Kf{4|kltj}6)W2~N#6sU`FF zF&!Dd45;QnEc%N0N1o=eNFN{$yxQlLtYgc-!uN3cL}K_Xd@%6szrO{?S4^5du=N6% z_m%jUH}^k@ZqkMC8w|JV2Tt0PE5#-wW`psz|#FtO*tZ%Uf-Mi6URX<{2T zjuOZU_7hf`KE4Y)eK3t^PkMnoHNElttJG=?Eqvo z=P~$7x5xiq6XbKcdCQHig+G94M9Qp~H+@Io_V_#FK2^_9B7U_e0evIj=57RDRbxJY zz&N^RnNlDr6L(ZfTuF;au)LPD6e;(ob)^%)9TR)GhGH!5ODn%T_LP;z(_kFE-@fO* zOr+RoARoO6JdWNlvcRwsjd0<@+CGmiKUo6)^o>Ygo`WjQ#+kS^`f0B#89{*uknfvU zs*&LKSUB;Hs{7T?YK@x$Xy3IsPSXP>fC1)m`;)ni_)2SZ6pr*Q&p$GK%4sY>8CgrC p`^neHXI(HEK5&*AT1h4ox2Joo6t3!>5^xYPd9D{2lLP&u { var metarow = this.meta[row]; // TODO: why null? var s = metarow != null ? metarow.label : ""; diff --git a/src/platform/verilog.ts b/src/platform/verilog.ts index 77b98b09..91805b06 100644 --- a/src/platform/verilog.ts +++ b/src/platform/verilog.ts @@ -97,6 +97,9 @@ export function VL_GTES_III(x,lbits,y,lhs,rhs) { export function VL_DIV_III(lbits,lhs,rhs) { return (((rhs)==0)?0:(lhs)/(rhs)); } +export function VL_MULS_III(lbits,lhs,rhs) { + return (((rhs)==0)?0:(lhs)*(rhs)); } + export function VL_MODDIV_III(lbits,lhs,rhs) { return (((rhs)==0)?0:(lhs)%(rhs)); } @@ -120,11 +123,11 @@ export function VL_REDXOR_32(r) { export var VL_WRITEF = console.log; // TODO: $write export function vl_finish(filename,lineno,hier) { - console.log("Finished at " + filename + ":" + lineno, hier); + if (!vl_finished) console.log("Finished at " + filename + ":" + lineno, hier); vl_finished = true; } export function vl_stop(filename,lineno,hier) { - console.log("Stopped at " + filename + ":" + lineno, hier); + if (!vl_stopped) console.log("Stopped at " + filename + ":" + lineno, hier); vl_stopped = true; } @@ -534,7 +537,8 @@ var VerilogPlatform = function(mainElement, options) { if (inspect) { inspect_data[frameidx] = inspect_obj[inspect_sym]; } - idata[frameidx] = RGBLOOKUP[gen.rgb & 15]; + let rgb = gen.rgb; + idata[frameidx] = rgb & 0x80000000 ? rgb : RGBLOOKUP[rgb & 15]; frameidx++; } } else if (!framehsync && gen.hsync) { @@ -744,19 +748,22 @@ var VerilogPlatform = function(mainElement, options) { gen.tick2(); } getToolForFilename(fn) { - if (fn.endsWith("asm")) - return "jsasm"; - else - return "verilator"; + if (fn.endsWith(".asm")) return "jsasm"; + else if (fn.endsWith(".ice")) return "silice"; + else return "verilator"; } getDefaultExtension() { return ".v"; }; inspect(name:string) : string { if (!gen) return; - if (name && !name.match(/^\w+$/)) return; + if (name) name = name.replace('.','_'); + if (!name || !name.match(/^\w+$/)) { + inspect_obj = inspect_sym = null; + return; + } var val = gen[name]; if (val === undefined && current_output.code) { - var re = new RegExp("(\\w+__DOT__" + name + ")\\b", "gm"); + var re = new RegExp("(\\w+__DOT__(?:_[dcw]_)" + name + ")\\b", "gm"); var m = re.exec(current_output.code); if (m) { name = m[1]; diff --git a/src/worker/fs/fsSilice.data b/src/worker/fs/fsSilice.data new file mode 100644 index 00000000..b5836f50 --- /dev/null +++ b/src/worker/fs/fsSilice.data @@ -0,0 +1,6952 @@ +module M_%MODULE%_mem_%NAME%( +input [%WENABLE0_WIDTH%:0] in_%NAME%_wenable0, +input %DATA_TYPE% [%DATA_WIDTH%:0] in_%NAME%_wdata0, +input [%ADDR0_WIDTH%:0] in_%NAME%_addr0, +input [%WENABLE1_WIDTH%:0] in_%NAME%_wenable1, +input [%DATA_WIDTH%:0] in_%NAME%_wdata1, +input [%ADDR1_WIDTH%:0] in_%NAME%_addr1, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata0, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata1, +input %CLOCK%0, +input %CLOCK%1 +); +reg %DATA_TYPE% [%DATA_WIDTH%:0] buffer[%DATA_SIZE%:0]; +always @(posedge %CLOCK%0) begin + out_%NAME%_rdata0 <= buffer[in_%NAME%_addr0]; + if (in_%NAME%_wenable0) begin + out_%NAME%_rdata0 <= in_%NAME%_wdata0; + buffer[in_%NAME%_addr0] <= in_%NAME%_wdata0; + end +end +always @(posedge %CLOCK%1) begin + out_%NAME%_rdata1 <= buffer[in_%NAME%_addr1]; + if (in_%NAME%_wenable1) begin + out_%NAME%_rdata1 <= in_%NAME%_wdata1; + buffer[in_%NAME%_addr1] <= in_%NAME%_wdata1; + end +end +%INITIAL% +endmodule +module M_%MODULE%_mem_%NAME%( +input [%WENABLE_WIDTH%:0] in_%NAME%_wenable, +input %DATA_TYPE% [%DATA_WIDTH%:0] in_%NAME%_wdata, +input [%ADDR_WIDTH%:0] in_%NAME%_addr, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata, +input %CLOCK% +); +reg %DATA_TYPE% [%DATA_WIDTH%:0] buffer[%DATA_SIZE%:0]; +always @(posedge %CLOCK%) begin + if (in_%NAME%_wenable) begin + buffer[in_%NAME%_addr] <= in_%NAME%_wdata; + end + out_%NAME%_rdata <= buffer[in_%NAME%_addr]; +end +%INITIAL% +endmodule +module M_%MODULE%_mem_%NAME%( +input [%WENABLE0_WIDTH%:0] in_%NAME%_wenable0, +input %DATA_TYPE% [%DATA_WIDTH%:0] in_%NAME%_wdata0, +input [%ADDR0_WIDTH%:0] in_%NAME%_addr0, +input [%WENABLE1_WIDTH%:0] in_%NAME%_wenable1, +input [%DATA_WIDTH%:0] in_%NAME%_wdata1, +input [%ADDR1_WIDTH%:0] in_%NAME%_addr1, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata0, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata1, +input %CLOCK%0, +input %CLOCK%1 +); +reg %DATA_TYPE% [%DATA_WIDTH%:0] buffer[%DATA_SIZE%:0]; +always @(posedge %CLOCK%0) begin + if (in_%NAME%_wenable0) begin + buffer[in_%NAME%_addr0] <= in_%NAME%_wdata0; + end else begin + out_%NAME%_rdata0 <= buffer[in_%NAME%_addr0]; + end +end +always @(posedge %CLOCK%1) begin + if (in_%NAME%_wenable1) begin + buffer[in_%NAME%_addr1] <= in_%NAME%_wdata1; + end else begin + out_%NAME%_rdata1 <= buffer[in_%NAME%_addr1]; + end +end +%INITIAL% +endmodule +module M_%MODULE%_mem_%NAME%( +input [%ADDR0_WIDTH%:0] in_%NAME%_addr0, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata0, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata1, +input [%WENABLE1_WIDTH%:0] in_%NAME%_wenable1, +input [%DATA_WIDTH%:0] in_%NAME%_wdata1, +input [%ADDR1_WIDTH%:0] in_%NAME%_addr1, +input %CLOCK%0, +input %CLOCK%1 +); +reg %DATA_TYPE% [%DATA_WIDTH%:0] buffer[%DATA_SIZE%:0]; +always @(posedge %CLOCK%0) begin + out_%NAME%_rdata0 <= buffer[in_%NAME%_addr0]; +end +always @(posedge %CLOCK%1) begin + if (in_%NAME%_wenable1) begin + buffer[in_%NAME%_addr1] <= in_%NAME%_wdata1; + end +end +%INITIAL% +endmodule +module M_%MODULE%_mem_%NAME%( +input [%ADDR_WIDTH%:0] in_%NAME%_addr, +output reg %DATA_TYPE% [%DATA_WIDTH%:0] out_%NAME%_rdata, +input %CLOCK% +); +reg %DATA_TYPE% [%DATA_WIDTH%:0] buffer[%DATA_SIZE%:0]; +always @(posedge %CLOCK%) begin + out_%NAME%_rdata <= buffer[in_%NAME%_addr]; +end +%INITIAL% +endmodule +// ----------------------- memory_ports.ice ----------- +// @sylefeb - Silice standard library +// Memory port interfaces +// 2020-09-03 + +// single port BRAM + +interface bram_port { + output! addr, + output! wenable, + input rdata, + output! wdata, +} + +// single port BROM + +interface brom_port { + output! addr, + input rdata, +} + +// dual port BRAM + +interface dualbram_port0 { + output! addr0, + output! wenable0, + input rdata0, + output! wdata0, +} + +interface dualbram_port1 { + output! addr1, + output! wenable1, + input rdata1, + output! wdata1, +} + +// simple dual port BRAM + +interface simple_dualbram_port0 { + output! addr0, + input rdata0, +} + +interface simple_dualbram_port1 { + output! addr1, + output! wenable1, + output! wdata1, +} + +interface bram_ports { + output! addr0, + output! wenable0, + input rdata0, + output! wdata0, + output! addr1, + output! wenable1, + input rdata1, + output! wdata1, +} + +// ----------------------- end of memory_ports.ice ---- +/* + + Silice FPGA language and compiler + (c) Sylvain Lefebvre - @sylefeb + +This work and all associated files are under the + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + +A copy of the license full text is included in +the distribution, please refer to it for details. + +(header_1_0) +*/ +// Sylvain Lefebvre 2019-09-26 + +#include "VgaChip.h" +#include "video_out.h" + +VgaChip::VgaChip(int color_depth) +{ + m_VideoOut = new VideoOut( + 0/*debug*/,color_depth/*color depth*/,0/*polarity*/, + 640 ,16,96,48, + 480 ,10,2,33, + "vgaout"); +} + +VgaChip::~VgaChip() +{ + delete (m_VideoOut); +} + +void VgaChip::eval( + vluint8_t clk, + vluint8_t vs, + vluint8_t hs, + vluint8_t red, + vluint8_t green, + vluint8_t blue) +{ + m_VideoOut->eval_RGB_HV(clk,vs,hs,red,green,blue); +} + +/* + + Silice FPGA language and compiler + (c) Sylvain Lefebvre - @sylefeb + +This work and all associated files are under the + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + +A copy of the license full text is included in +the distribution, please refer to it for details. + +(header_1_0) +*/ +// +// Based on code from the MCC216 project (https://github.com/fredrequin/fpga_1943) +// (c) Frederic Requin, GPL v3 license +// + +#include "verilated.h" +#include "video_out.h" +#include "LibSL/Image/Image.h" +#include "LibSL/Image/ImageFormat_TGA.h" +#include "LibSL/Math/Vertex.h" +#include +#include +#include + +using namespace LibSL::Image; +using namespace LibSL::Math; + +ImageFormat_TGA g_RegisterFormat_TGA; + +// Constructor +VideoOut::VideoOut(vluint8_t debug, vluint8_t depth, vluint8_t polarity, + vluint16_t hactive, vluint16_t hfporch_, vluint16_t hspulse_, vluint16_t hbporch_, + vluint16_t vactive, vluint16_t vfporch_, vluint16_t vspulse_, vluint16_t vbporch_, + const char *file) +{ + // color depth + if (depth <= 8) { + bit_mask = (1 << depth) - 1; + bit_shift = (int)(8 - depth); + } else { + bit_mask = (vluint8_t)0xFF; + bit_shift = (int)0; + } + // synchros polarities + hs_pol = (polarity & HS_POS_POL) ? (vluint8_t)1 : (vluint8_t)0; + vs_pol = (polarity & VS_POS_POL) ? (vluint8_t)1 : (vluint8_t)0; + // screen format initialized + hor_size = hactive; + ver_size = vactive; + // record synch values + hfporch = hfporch_; + hspulse = hspulse_; + hbporch = hbporch_; + vfporch = vfporch_; + vspulse = vspulse_; + vbporch = vbporch_; + // debug mode + dbg_on = debug; + // allocate the pixels + std::cerr << hactive << " x " << vactive << " x " << (int)depth << std::endl; + pixels.allocate((int)hactive, (int)vactive); + // copy the filename + filename = std::string(file); + // internal variables cleared + hcount = (vluint16_t)hor_size; + vcount = (vluint16_t)ver_size; + prev_clk = (vluint8_t)0; + prev_hs = (vluint8_t)0; + prev_vs = (vluint8_t)0; + dump_ctr = (int)0; + // synch + v_sync_stage = e_Front; + h_sync_stage = e_Front; + v_sync_count = 0; + h_sync_count = 0; +} + +// Destructor +VideoOut::~VideoOut() +{ + +} + +// evaluate : RGB with synchros +void VideoOut::eval_RGB_HV +( + // Clock + vluint8_t clk, + // Synchros + vluint8_t vs, + vluint8_t hs, + // RGB colors + vluint8_t red, + vluint8_t green, + vluint8_t blue +) +{ + + // Rising edge on clock + if (clk && !prev_clk) { + //printf("\nh stage %d, v stage %d, hs %d (prev:%d), vs %d (prev:%d), hcount %d, vcount %d, hsync_cnt:%d, vsync_cnt:%d\n", + // h_sync_stage,v_sync_stage,hs,prev_hs,vs,prev_vs,hcount,vcount,h_sync_count,v_sync_count); + + // Horizontal synch update + bool h_sync_achieved = false; + switch (h_sync_stage) + { + case e_Front: + h_sync_count ++; + if (h_sync_count == hfporch-1) { + h_sync_stage = e_SynchPulseUp; + h_sync_count = 0; + } + break; + case e_SynchPulseUp: + if ((hs == hs_pol) && (prev_hs != hs_pol)) { + // raising edge on hs + h_sync_stage = e_SynchPulseDown; + if (dbg_on) printf(" Rising edge on HS"); + } + break; + case e_SynchPulseDown: + if ((hs != hs_pol) && (prev_hs != hs_pol)) { + // falling edge on hs + h_sync_stage = e_Back; + h_sync_count ++; + } + break; + case e_Back: + h_sync_count ++; + if (h_sync_count == hbporch) { + h_sync_stage = e_Done; + h_sync_count = 0; + hcount = 0; + // just achived hsynch + h_sync_achieved = true; + // end of frame? + if (vcount >= ver_size) { + // yes, trigger vsynch + vcount = 0; + h_sync_stage = e_Front; + } + } + break; + case e_Done: break; + } + + // Vertical synch update, if horizontal synch achieved + if (h_sync_achieved) { + + switch (v_sync_stage) + { + case e_Front: + v_sync_count ++; + if (v_sync_count == vfporch-1) { + v_sync_stage = e_SynchPulseUp; + v_sync_count = 0; + } + break; + case e_SynchPulseUp: + if ((vs == vs_pol) && (prev_vs != vs_pol)) { + // raising edge on vs + v_sync_stage = e_SynchPulseDown; + if (dbg_on) printf(" Rising edge on VS"); + } + break; + case e_SynchPulseDown: + if ((vs != vs_pol) && (prev_vs != vs_pol)) { + // falling edge on vs + v_sync_stage = e_Back; + v_sync_count ++; + + } + break; + case e_Back: + v_sync_count ++; + if (v_sync_count == vbporch) { + vcount = 0; + v_sync_stage = e_Done; + v_sync_count = 0; + { + char num[64]; + snprintf(num,64, "%04d", dump_ctr); + std::string tmp = filename + "_" + std::string(num) + ".tga"; + // printf(" Save snapshot in file \"%s\"\n", tmp.c_str()); + { + ImageRGB img; + img.pixels() = pixels; + saveImage(tmp.c_str(),&img); + } + dump_ctr++; + } + } + break; + case e_Done: break; + } + + prev_vs = vs; + + } + + // reset horizontal synchro + if (h_sync_stage == e_Done) { + if (hcount >= hor_size) { + h_sync_stage = e_Front; + vcount ++; + } + } + // reset vertical synchro + if (v_sync_stage == e_Done) { + if (vcount >= ver_size) { + h_sync_stage = e_Front; + v_sync_stage = e_Front; + } + } + + // Grab active area + if (v_sync_stage == e_Done && h_sync_stage == e_Done) { + + if (vcount < ver_size) { + if (hcount < hor_size) { + + uchar r = (red & bit_mask) << (bit_shift); + uchar g = (green & bit_mask) << (bit_shift); + uchar b = (blue & bit_mask) << (bit_shift); + + if (hcount >= 0 && vcount >= 0 && hcount < pixels.xsize() && vcount < pixels.ysize()) { + pixels.at((int)(hcount), (int)(vcount)) = v3b(r,g,b); + // printf("*** [pixel write at %d,%d R%dG%dB%d]\n",hcount,vcount,(int)r,(int)g,(int)b); + } else { + printf("*** [ERROR] out of bounds pixel write at %d,%d R%dG%dB%d]\n",hcount,vcount,(int)r,(int)g,(int)b); + } + } + } + } + + hcount ++; + + prev_hs = hs; + + } + + prev_clk = clk; + +} + +vluint16_t VideoOut::get_hcount() +{ + return hcount; +} + +vluint16_t VideoOut::get_vcount() +{ + return vcount; +} + +/* + + Silice FPGA language and compiler + (c) Sylvain Lefebvre - @sylefeb + +This work and all associated files are under the + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + +A copy of the license full text is included in +the distribution, please refer to it for details. + +(header_1_0) +*/ +// SL 2019-10-09 + +#include "Vtop.h" +#include + +int main(int argc,char **argv) +{ + + Verilated::commandArgs(argc,argv); + + Vtop *bare_test = new Vtop(); + + char foo[1<<17]; // DEBUG FIXME: there is an access violation that makes this necessary. I have not been able to track it down so far!! Terrible. + + while (!Verilated::gotFinish()) { + + bare_test->clk = 1; + + bare_test->eval(); + + bare_test->clk = 0; + + bare_test->eval(); + + } + + return 0; +} + +/* + + Silice FPGA language and compiler + (c) Sylvain Lefebvre - @sylefeb + +This work and all associated files are under the + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + +A copy of the license full text is included in +the distribution, please refer to it for details. + +(header_1_0) +*/ +// SL 2019-09-23 + +#include "Vtop.h" +#include + +#include "VgaChip.h" +#include "sdr_sdram.h" + +unsigned int main_time = 0; +double sc_time_stamp() +{ + return main_time; +} + +int main(int argc,char **argv) +{ + Verilated::commandArgs(argc,argv); + + Vtop *vga_test = new Vtop(); + + vga_test->clk = 0; + + // we need to step simulation until we get the parameters + do { + + vga_test->clk = 1 - vga_test->clk; + + vga_test->eval(); + + } while ((int)vga_test->video_color_depth == 0); + + VgaChip *vga_chip = new VgaChip((int)vga_test->video_color_depth); + + char foo[1<<18]; // DEBUG FIXME: there is an access violation that makes this necessary. I have not been able to track it down so far!! Terrible. + + vluint8_t sdram_flags = 0; + if ((int)vga_test->sdram_word_width == 8) { + sdram_flags |= FLAG_DATA_WIDTH_8; + } else if ((int)vga_test->sdram_word_width == 16) { + sdram_flags |= FLAG_DATA_WIDTH_16; + } else if ((int)vga_test->sdram_word_width == 32) { + sdram_flags |= FLAG_DATA_WIDTH_32; + } else if ((int)vga_test->sdram_word_width == 64) { + sdram_flags |= FLAG_DATA_WIDTH_64; + } + + SDRAM* sdr = new SDRAM(13 /*8192*/, 10 /*1024*/, sdram_flags, NULL); + // "sdram.txt"); + vluint64_t sdram_dq = 0; + + vluint8_t prev_vga_vs = 0; + + while (!Verilated::gotFinish()) { + + vga_test->clk = 1 - vga_test->clk; + + vga_test->eval(); + + sdr->eval(main_time, + vga_test->sdram_clock, 1, + vga_test->sdram_cs, vga_test->sdram_ras, vga_test->sdram_cas, vga_test->sdram_we, + vga_test->sdram_ba, vga_test->sdram_a, + vga_test->sdram_dqm, (vluint64_t)vga_test->sdram_dq_o, sdram_dq); + + vga_test->sdram_dq_i = (vga_test->sdram_dq_en) ? vga_test->sdram_dq_o : sdram_dq; + + if (prev_vga_vs == 0 && vga_test->video_vs != 0) { + static int cnt = 0; + char str[256]; + snprintf(str,256,"dump_%04d.raw",cnt++); + sdr->save(str,4*8192*1024*2,0); + } + prev_vga_vs = vga_test->video_vs; + + vga_chip->eval( + vga_test->video_clock, + vga_test->video_vs,vga_test->video_hs, + vga_test->video_r,vga_test->video_g,vga_test->video_b); + + main_time ++; + } + + return 0; +} + +// Copyright 2013 Frederic Requin +// +// This file is part of the MCC216 project (www.arcaderetrogaming.com) +// +// The SDRAM C++ model is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. +// +// The SDRAM C++ model is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// SDRAM C++ model: +// ---------------- +// - Based on the verilog model from Micron : "mt48lc8m16a2.v" // 2 meg x 16 x 4 banks +// - Designed to work with "Verilator" tool (www.veripool.org) +// - 8/16/32-bit data bus supported +// - 4 banks only +// - Two memory layouts : interleaved banks or contiguous banks +// - Sequential burst only, no interleaved burst yet +// - Binary images can be loaded to and saved from SDRAM +// - Debug mode to trace every SDRAM access +// - Endianness support for 16 and 32-bit memories +// +// TODO: +// - Add interleaved burst support +// +// 2020-03-03 - included in silice project, Sylvain Lefebvre, @sylefeb + +#ifndef _SDR_SDRAM_H_ +#define _SDR_SDRAM_H_ + +#include "verilated.h" + +#define SDRAM_NUM_BANKS (4) +#define SDRAM_BIT_BANKS (2) +#define CMD_PIPE_DEPTH (4) +#define DQM_PIPE_DEPTH (2) + +#define FLAG_DATA_WIDTH_8 ((vluint8_t)0x00) +#define FLAG_DATA_WIDTH_16 ((vluint8_t)0x01) +#define FLAG_DATA_WIDTH_32 ((vluint8_t)0x03) +#define FLAG_DATA_WIDTH_64 ((vluint8_t)0x07) +#define FLAG_BANK_INTERLEAVING ((vluint8_t)0x08) +#define FLAG_BIG_ENDIAN ((vluint8_t)0x10) +#define FLAG_RANDOM_FILLED ((vluint8_t)0x20) +#define FLAG_DEBUG_ON ((vluint8_t)0x40) + +class SDRAM +{ + public: + // Constructor and destructor + SDRAM(vluint8_t log2_rows, vluint8_t log2_cols, vluint8_t flags, char *logfile); + ~SDRAM(); + // Methods + void load(const char *name, vluint32_t size, vluint32_t addr); + void save(const char *name, vluint32_t size, vluint32_t addr); + void eval(vluint64_t ts, vluint8_t clk, vluint8_t cke, + vluint8_t cs_n, vluint8_t ras_n, vluint8_t cas_n, vluint8_t we_n, + vluint8_t ba, vluint16_t addr, + vluint8_t dqm, vluint64_t dq_in, vluint64_t &dq_out); + vluint8_t read_byte(vluint32_t addr); + vluint16_t read_word(vluint32_t addr); + vluint32_t read_long(vluint32_t addr); + vluint64_t read_quad(vluint32_t addr); + vluint32_t mem_size; + private: + // Byte reading functions (to speedup access) + vluint8_t (SDRAM::*read_byte_priv)(vluint32_t); + vluint8_t read_byte_i_be_8(vluint32_t addr); + vluint8_t read_byte_i_be_16(vluint32_t addr); + vluint8_t read_byte_i_be_32(vluint32_t addr); + vluint8_t read_byte_i_be_64(vluint32_t addr); + vluint8_t read_byte_i_le_8(vluint32_t addr); + vluint8_t read_byte_i_le_16(vluint32_t addr); + vluint8_t read_byte_i_le_32(vluint32_t addr); + vluint8_t read_byte_i_le_64(vluint32_t addr); + vluint8_t read_byte_c_be_8(vluint32_t addr); + vluint8_t read_byte_c_be_16(vluint32_t addr); + vluint8_t read_byte_c_be_32(vluint32_t addr); + vluint8_t read_byte_c_be_64(vluint32_t addr); + vluint8_t read_byte_c_le_8(vluint32_t addr); + vluint8_t read_byte_c_le_16(vluint32_t addr); + vluint8_t read_byte_c_le_32(vluint32_t addr); + vluint8_t read_byte_c_le_64(vluint32_t addr); + // SDRAM capacity + int bus_mask; // Data bus width (bytes - 1) + int bus_log2; // Data bus width (log2(bytes)) + int num_rows; // Number of rows + int num_cols; // Number of columns + int bit_rows; // Number of rows (log 2) + int bit_cols; // Number of columns (log 2) + vluint32_t mask_bank; // Bit mask for banks + vluint32_t mask_rows; // Bit mask for rows + vluint32_t mask_cols; // Bit mask for columns + // Memory arrays + vluint8_t *mem_array_7[SDRAM_NUM_BANKS]; // MSB + vluint8_t *mem_array_6[SDRAM_NUM_BANKS]; + vluint8_t *mem_array_5[SDRAM_NUM_BANKS]; + vluint8_t *mem_array_4[SDRAM_NUM_BANKS]; + vluint8_t *mem_array_3[SDRAM_NUM_BANKS]; + vluint8_t *mem_array_2[SDRAM_NUM_BANKS]; + vluint8_t *mem_array_1[SDRAM_NUM_BANKS]; + vluint8_t *mem_array_0[SDRAM_NUM_BANKS]; // LSB + // Mode register + int cas_lat; // CAS latency (2 or 3) + int bst_len_rd; // Burst length during read + int bst_len_wr; // Burst length during write + vluint8_t bst_type; // Burst type + // Debug mode + vluint8_t dbg_on; + // Special memory flags + vluint8_t mem_flags; + // Internal variables + vluint8_t prev_clk; // Previous clock state + vluint8_t cmd_pipe[CMD_PIPE_DEPTH]; // Command pipeline + int col_pipe[CMD_PIPE_DEPTH]; // Column address pipeline + vluint8_t ba_pipe[CMD_PIPE_DEPTH]; // Bank address pipeline + vluint8_t bap_pipe[CMD_PIPE_DEPTH]; // Bank precharge pipeline + vluint8_t a10_pipe[CMD_PIPE_DEPTH]; // A[10] wire pipeline + vluint8_t dqm_pipe[DQM_PIPE_DEPTH]; // DQM pipeline (for read) + vluint8_t row_act[SDRAM_NUM_BANKS]; // Bank activate + vluint8_t row_pre[SDRAM_NUM_BANKS]; // Bank precharge + int row_addr[SDRAM_NUM_BANKS]; // Row address during activate + vluint8_t ap_bank[SDRAM_NUM_BANKS]; // Bank being auto-precharged + int bank; // Current bank during read/write + int row; // Current row during read/write + int col; // Current column during read/write + int bst_ctr_rd; // Burst counter (read) + int bst_ctr_wr; // Burst counter (write) +public: + // Log file + FILE *fh_log; + char *log_buf; + int log_size; +}; + +#endif /* _SDR_SDRAM_H_ */ +// Copyright 2013 Frederic Requin +// +// This file is part of the MCC216 project (www.arcaderetrogaming.com) +// +// The SDRAM C++ model is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. +// +// The SDRAM C++ model is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// SDRAM C++ model: +// ---------------- +// - Based on the verilog model from Micron : "mt48lc8m16a2.v" +// - Designed to work with "Verilator" tool (www.veripool.org) +// - 8/16/32-bit data bus supported +// - 4 banks only +// - Two memory layouts : interleaved banks or contiguous banks +// - Sequential burst only, no interleaved burst yet +// - Binary images can be loaded to and saved from SDRAM +// - Debug mode to trace every SDRAM access +// - Endianness support for 16 and 32-bit memories +// +// TODO: +// - Add interleaved burst support + +#include "verilated.h" +#include "sdr_sdram.h" +#include +#include +#include + +#include + +// SDRAM commands +#define CMD_LMR ((vluint8_t)0) +#define CMD_REF ((vluint8_t)1) +#define CMD_PRE ((vluint8_t)2) +#define CMD_ACT ((vluint8_t)3) +#define CMD_WR ((vluint8_t)4) +#define CMD_RD ((vluint8_t)5) +#define CMD_BST ((vluint8_t)6) +#define CMD_NOP ((vluint8_t)7) + +// Data lanes +#define DATA_MSB ((vluint8_t)0x01) +#define DATA_MSW ((vluint8_t)0x02) +#define DATA_MSL ((vluint8_t)0x04) + +// Constructor +SDRAM::SDRAM(vluint8_t log2_rows, vluint8_t log2_cols, vluint8_t flags, char *logfile) +{ + // memory size + int s = (int)1 << (log2_rows + log2_cols); + // SDRAM capacity initialized + bus_mask = flags & (DATA_MSB | DATA_MSW | DATA_MSL); + bus_log2 = (flags & DATA_MSB) ? 1 : 0; + bus_log2 = (flags & DATA_MSW) ? 2 : bus_log2; + bus_log2 = (flags & DATA_MSL) ? 3 : bus_log2; + bit_rows = (int)log2_rows; + bit_cols = (int)log2_cols; + num_rows = (int)1 << log2_rows; + num_cols = (int)1 << log2_cols; + mask_cols = (num_cols - 1) << bus_log2; + if (flags & FLAG_BANK_INTERLEAVING) + { + // Banks are interleaved + mask_rows = (vluint32_t)(num_rows - 1) << (log2_cols + bus_log2 + SDRAM_BIT_BANKS); + mask_bank = (vluint32_t)(SDRAM_NUM_BANKS - 1) << (log2_cols + bus_log2 ); + } + else + { + // Banks are contiguous + mask_rows = (vluint32_t)(num_rows - 1) << (log2_cols + bus_log2 ); + mask_bank = (vluint32_t)(SDRAM_NUM_BANKS - 1) << (log2_cols + bus_log2 + SDRAM_BIT_BANKS); + } + mem_size = s << (bus_log2 + SDRAM_BIT_BANKS); + // Init message + std::cerr << "Instantiating " << (mem_size >> 20) << " MB SDRAM : " << SDRAM_NUM_BANKS << " banks x " << num_rows << " rows x " << num_cols << " cols x " << (8 << bus_log2) << " bits" << std::endl; + // byte reading function + switch (flags & (DATA_MSB | DATA_MSW | DATA_MSL | FLAG_BANK_INTERLEAVING | FLAG_BIG_ENDIAN)) + { + // Little endian, contiguous banks + case 0x00 : read_byte_priv = &SDRAM::read_byte_c_le_8; break; + case 0x01 : read_byte_priv = &SDRAM::read_byte_c_le_16; break; + case 0x02 : read_byte_priv = &SDRAM::read_byte_c_le_32; break; + case 0x03 : read_byte_priv = &SDRAM::read_byte_c_le_32; break; + case 0x04 : read_byte_priv = &SDRAM::read_byte_c_le_64; break; + case 0x05 : read_byte_priv = &SDRAM::read_byte_c_le_64; break; + case 0x06 : read_byte_priv = &SDRAM::read_byte_c_le_64; break; + case 0x07 : read_byte_priv = &SDRAM::read_byte_c_le_64; break; + // Little endian, interleaved banks + case 0x08 : read_byte_priv = &SDRAM::read_byte_i_le_8; break; + case 0x09 : read_byte_priv = &SDRAM::read_byte_i_le_16; break; + case 0x0A : read_byte_priv = &SDRAM::read_byte_i_le_32; break; + case 0x0B : read_byte_priv = &SDRAM::read_byte_i_le_32; break; + case 0x0C : read_byte_priv = &SDRAM::read_byte_i_le_64; break; + case 0x0D : read_byte_priv = &SDRAM::read_byte_i_le_64; break; + case 0x0E : read_byte_priv = &SDRAM::read_byte_i_le_64; break; + case 0x0F : read_byte_priv = &SDRAM::read_byte_i_le_64; break; + // Big endian, contiguous banks + case 0x10 : read_byte_priv = &SDRAM::read_byte_c_be_8; break; + case 0x11 : read_byte_priv = &SDRAM::read_byte_c_be_16; break; + case 0x12 : read_byte_priv = &SDRAM::read_byte_c_be_32; break; + case 0x13 : read_byte_priv = &SDRAM::read_byte_c_be_32; break; + case 0x14 : read_byte_priv = &SDRAM::read_byte_c_be_64; break; + case 0x15 : read_byte_priv = &SDRAM::read_byte_c_be_64; break; + case 0x16 : read_byte_priv = &SDRAM::read_byte_c_be_64; break; + case 0x17 : read_byte_priv = &SDRAM::read_byte_c_be_64; break; + // Big endian, interleaved banks + case 0x18 : read_byte_priv = &SDRAM::read_byte_i_be_8; break; + case 0x19 : read_byte_priv = &SDRAM::read_byte_i_be_16; break; + case 0x1A : read_byte_priv = &SDRAM::read_byte_i_be_32; break; + case 0x1B : read_byte_priv = &SDRAM::read_byte_i_be_32; break; + case 0x1C : read_byte_priv = &SDRAM::read_byte_i_be_64; break; + case 0x1D : read_byte_priv = &SDRAM::read_byte_i_be_64; break; + case 0x1E : read_byte_priv = &SDRAM::read_byte_i_be_64; break; + case 0x1F : read_byte_priv = &SDRAM::read_byte_i_be_64; break; + } + + // debug mode + if (logfile) + { + fh_log = fopen(logfile, "w"); + log_buf = new char[2048]; + log_size = 0; + if ((fh_log) && (log_buf)) + { + printf("SDRAM log file \"%s\" created\n", logfile); + dbg_on = 1; + } + else + { + dbg_on = 0; + } + } + else + { + fh_log = (FILE *)NULL; + log_buf = (char *)NULL; + log_size = 0; + dbg_on = 0; + } + + // special flags + mem_flags = flags; + + // mode register cleared + cas_lat = 0; + bst_len_rd = (int)0; + bst_len_wr = (int)0; + bst_type = (vluint8_t)0; + + // internal variables cleared + prev_clk = (vluint8_t)0; + for (int i = 0; i < CMD_PIPE_DEPTH; i++) + { + cmd_pipe[i] = CMD_NOP; + col_pipe[i] = (int)0; + ba_pipe[i] = (vluint8_t)0; + bap_pipe[i] = (vluint8_t)0; + a10_pipe[i] = (vluint16_t)0; + } + dqm_pipe[0] = (vluint8_t)0; + dqm_pipe[1] = (vluint8_t)0; + for (int i = 0; i < SDRAM_NUM_BANKS; i++) + { + row_act[i] = (vluint8_t)1; + row_pre[i] = (vluint8_t)0; + row_addr[i] = (int)0; + ap_bank[i] = (vluint8_t)0; + } + bank = (int)0; + row = (int)0; + col = (int)0; + bst_ctr_rd = (int)0; + bst_ctr_wr = (int)0; + + // one array per byte lane and per bank (up to 16 arrays) + for (int i = 0; i < SDRAM_NUM_BANKS; i++) + { + mem_array_0[i] = new vluint8_t[s]; + if (flags & DATA_MSB) mem_array_1[i] = new vluint8_t[s]; + if (flags & DATA_MSW) mem_array_2[i] = new vluint8_t[s]; + if (flags & DATA_MSW) mem_array_3[i] = new vluint8_t[s]; + if (flags & DATA_MSL) mem_array_4[i] = new vluint8_t[s]; + if (flags & DATA_MSL) mem_array_5[i] = new vluint8_t[s]; + if (flags & DATA_MSL) mem_array_6[i] = new vluint8_t[s]; + if (flags & DATA_MSL) mem_array_7[i] = new vluint8_t[s]; + } + + if (flags & FLAG_RANDOM_FILLED) + { + // fill the arrays with random numbers + srand (time (NULL)); + for (int i = 0; i < SDRAM_NUM_BANKS; i++) + { + for (int j = 0; j < s; j++) + { + mem_array_0[i][j] = (vluint8_t)rand() & 0xFF; + if (flags & DATA_MSB) mem_array_1[i][j] = (vluint8_t)rand() & 0xFF; + if (flags & DATA_MSW) mem_array_2[i][j] = (vluint8_t)rand() & 0xFF; + if (flags & DATA_MSW) mem_array_3[i][j] = (vluint8_t)rand() & 0xFF; + if (flags & DATA_MSL) mem_array_4[i][j] = (vluint8_t)rand() & 0xFF; + if (flags & DATA_MSL) mem_array_5[i][j] = (vluint8_t)rand() & 0xFF; + if (flags & DATA_MSL) mem_array_6[i][j] = (vluint8_t)rand() & 0xFF; + if (flags & DATA_MSL) mem_array_7[i][j] = (vluint8_t)rand() & 0xFF; + } + } + } + else + { + // clear the arrays + for (int i = 0; i < SDRAM_NUM_BANKS; i++) + { + for (int j = 0; j < s; j++) + { + mem_array_0[i][j] = (vluint8_t)0; + if (flags & DATA_MSB) mem_array_1[i][j] = (vluint8_t)0; + if (flags & DATA_MSW) mem_array_2[i][j] = (vluint8_t)0; + if (flags & DATA_MSW) mem_array_3[i][j] = (vluint8_t)0; + if (flags & DATA_MSL) mem_array_4[i][j] = (vluint8_t)0; + if (flags & DATA_MSL) mem_array_5[i][j] = (vluint8_t)0; + if (flags & DATA_MSL) mem_array_6[i][j] = (vluint8_t)0; + if (flags & DATA_MSL) mem_array_7[i][j] = (vluint8_t)0; + } + } + } +} + +// Destructor +SDRAM::~SDRAM() +{ + // free the memory + for (int i = 0; i < SDRAM_NUM_BANKS; i++) + { + delete[] mem_array_0[i]; + if (mem_flags & DATA_MSB) delete[] mem_array_1[i]; + if (mem_flags & DATA_MSW) delete[] mem_array_2[i]; + if (mem_flags & DATA_MSW) delete[] mem_array_3[i]; + if (mem_flags & DATA_MSL) delete[] mem_array_4[i]; + if (mem_flags & DATA_MSL) delete[] mem_array_5[i]; + if (mem_flags & DATA_MSL) delete[] mem_array_6[i]; + if (mem_flags & DATA_MSL) delete[] mem_array_7[i]; + } +} + +// Binary file loading +void SDRAM::load(const char *name, vluint32_t size, vluint32_t addr) +{ + FILE *fh; + + fh = fopen(name, "rb"); + if (fh) + { + int row_size; // Row size (num_cols * 1, 2 or 4) + vluint8_t *row_buf; // Row buffer + int row_pos; // Row position (0 to num_rows - 1) + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + // Row size computation based on data bus width + row_size = (int)1 << (bit_cols + bus_log2); + // Allocate one full row + row_buf = new vluint8_t[row_size]; + + // Row position + row_pos = (int)addr >> (bit_cols + bus_log2); + // Banks layout + if (mem_flags & FLAG_BANK_INTERLEAVING) + { + // Banks are interleaved + bank_nr = row_pos & (SDRAM_NUM_BANKS - 1); + row_pos = row_pos >> SDRAM_BIT_BANKS; + } + else + { + // Banks are contiguous + bank_nr = row_pos >> bit_rows; + row_pos = row_pos & (num_rows - 1); + } + idx = row_pos << bit_cols; + + printf("Starting row : %d, starting bank : %d\n", row_pos, bank_nr); + printf("Loading 0x%08lX bytes @ 0x%08lX from binary file \"%s\"...", size, addr, name); + for (int i = 0; i < (int)size; i += row_size) + { + // Read one full row from the binary file + fread((void *)row_buf, row_size, 1, fh); + + // Here, we take care of the endianness + if (mem_flags & FLAG_BIG_ENDIAN) + { + // MSB first (motorola's way) + for (int j = 0; j < row_size; ) + { + // Write MSL (if present) + if (mem_flags & DATA_MSL) + { + mem_array_7[bank_nr][idx] = row_buf[j++]; + mem_array_6[bank_nr][idx] = row_buf[j++]; + mem_array_5[bank_nr][idx] = row_buf[j++]; + mem_array_4[bank_nr][idx] = row_buf[j++]; + } + // Write MSW (if present) + if (mem_flags & DATA_MSW) + { + mem_array_3[bank_nr][idx] = row_buf[j++]; + mem_array_2[bank_nr][idx] = row_buf[j++]; + } + // Write MSB (if present) + if (mem_flags & DATA_MSB) + { + mem_array_1[bank_nr][idx] = row_buf[j++]; + } + // Write LSB + mem_array_0[bank_nr][idx] = row_buf[j++]; + // Next word + idx++; + } + } + else + { + // LSB first (intel's way) + for (int j = 0; j < row_size; ) + { + // Write LSB + mem_array_0[bank_nr][idx] = row_buf[j++]; + // Write MSB (if present) + if (mem_flags & DATA_MSB) + { + mem_array_1[bank_nr][idx] = row_buf[j++]; + } + // Write MSW (if present) + if (mem_flags & DATA_MSW) + { + mem_array_2[bank_nr][idx] = row_buf[j++]; + mem_array_3[bank_nr][idx] = row_buf[j++]; + } + // Write MSL (if present) + if (mem_flags & DATA_MSL) + { + mem_array_4[bank_nr][idx] = row_buf[j++]; + mem_array_5[bank_nr][idx] = row_buf[j++]; + mem_array_6[bank_nr][idx] = row_buf[j++]; + mem_array_7[bank_nr][idx] = row_buf[j++]; + } + // Next word + idx++; + } + } + + // Compute next row's address + if (mem_flags & FLAG_BANK_INTERLEAVING) + { + // Increment bank number + bank_nr = (bank_nr + 1) & (SDRAM_NUM_BANKS - 1); + + // Bank #3 -> bank #0 + if (!bank_nr) + { + row_pos ++; + if ((row_pos == (int)num_rows) && ((i + row_size) < (int)size)) + { + printf("Memory overflow while loading !!\n"); + return; + } + } + else + { + idx -= (int)num_cols; + } + } + else + { + // Increment row position + row_pos = (row_pos + 1) & ((int)num_rows - 1); + + // Last row in a bank + if (!row_pos) + { + idx = 0; + bank_nr++; + if ((bank_nr == SDRAM_NUM_BANKS) && ((i + row_size) < (int)size)) + { + printf("Memory overflow while loading !!\n"); + return; + } + } + } + } + printf("OK\n"); + + delete[] row_buf; + } + else + { + printf("Cannot load binary file \"%s\" !!\n", name); + } +} + +// Binary file saving +void SDRAM::save(const char *name, vluint32_t size, vluint32_t addr) +{ + FILE *fh; + + fh = fopen(name, "wb"); + if (fh) + { + int row_size; // Row size (num_cols * 1, 2 or 4) + vluint8_t *row_buf; // Row buffer + int row_pos; // Row position (0 to num_rows - 1) + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + // Row size computation based on data bus width + row_size = (int)1 << (bit_cols + bus_log2); + // Allocate one full row + row_buf = new vluint8_t[row_size]; + + // Row position + row_pos = (int)addr >> (bus_log2 + bit_cols); + // Banks layout + if (mem_flags & FLAG_BANK_INTERLEAVING) + { + // Banks are interleaved + bank_nr = row_pos & (SDRAM_NUM_BANKS - 1); + row_pos = row_pos >> SDRAM_BIT_BANKS; + } + else + { + // Banks are contiguous + bank_nr = row_pos >> bit_rows; + row_pos = row_pos & (num_rows - 1); + } + idx = row_pos << bit_cols; + + printf("Saving 0x%08lX bytes @ 0x%08lX to binary file \"%s\"...", size, addr, name); + for (int i = 0; i < (int)size; i += row_size) + { + // Here, we take care of the endianness + if (mem_flags & FLAG_BIG_ENDIAN) + { + // MSB first (motorola's way) + for (int j = 0; j < row_size; ) + { + // Read MSL (if present) + if (mem_flags & DATA_MSL) + { + row_buf[j++] = mem_array_7[bank_nr][idx]; + row_buf[j++] = mem_array_6[bank_nr][idx]; + row_buf[j++] = mem_array_5[bank_nr][idx]; + row_buf[j++] = mem_array_4[bank_nr][idx]; + } + // Read MSW (if present) + if (mem_flags & DATA_MSW) + { + row_buf[j++] = mem_array_3[bank_nr][idx]; + row_buf[j++] = mem_array_2[bank_nr][idx]; + } + // Read MSB (if present) + if (mem_flags & DATA_MSB) + { + row_buf[j++] = mem_array_1[bank_nr][idx]; + } + // Read LSB + row_buf[j++] = mem_array_0[bank_nr][idx]; + // Next word + idx++; + } + } + else + { + // LSB first (intel's way) + for (int j = 0; j < row_size; ) + { + // Read LSB + row_buf[j++] = mem_array_0[bank_nr][idx]; + // Read MSB (if present) + if (mem_flags & DATA_MSB) + { + row_buf[j++] = mem_array_1[bank_nr][idx]; + } + // Read MSW (if present) + if (mem_flags & DATA_MSW) + { + row_buf[j++] = mem_array_2[bank_nr][idx]; + row_buf[j++] = mem_array_3[bank_nr][idx]; + } + // Read MSL (if present) + if (mem_flags & DATA_MSL) + { + row_buf[j++] = mem_array_4[bank_nr][idx]; + row_buf[j++] = mem_array_5[bank_nr][idx]; + row_buf[j++] = mem_array_6[bank_nr][idx]; + row_buf[j++] = mem_array_7[bank_nr][idx]; + } + // Next word + idx++; + } + } + + // Compute next row's address + if (mem_flags & FLAG_BANK_INTERLEAVING) + { + // Increment bank number + bank_nr = (bank_nr + 1) & (SDRAM_NUM_BANKS - 1); + + // Bank #3 -> bank #0 + if (!bank_nr) + { + row_pos ++; + if ((row_pos == (int)num_rows) && ((i + row_size) < (int)size)) + { + printf("Memory overflow while saving !!\n"); + return; + } + } + else + { + idx -= (int)num_cols; + } + } + else + { + // Increment row position + row_pos = (row_pos + 1) & ((int)num_rows - 1); + + // Last row in a bank + if (!row_pos) + { + idx = 0; + bank_nr++; + if ((bank_nr == SDRAM_NUM_BANKS) && ((i + row_size) < (int)size)) + { + printf("Memory overflow while saving !!\n"); + return; + } + } + } + + // Write one full row to the binary file + fwrite((void *)row_buf, row_size, 1, fh); + } + printf("OK\n"); + + delete[] row_buf; + fclose(fh); + } + else + { + printf("Cannot save binary file \"%s\" !!\n", name); + } +} + +// Read a byte +vluint8_t SDRAM::read_byte(vluint32_t addr) +{ + return (this->*read_byte_priv)(addr); +} + +// Read a word +vluint16_t SDRAM::read_word(vluint32_t addr) +{ + if (mem_flags & FLAG_BIG_ENDIAN) + { + return ((vluint16_t)(this->*read_byte_priv)(addr ) << 8) | + (vluint16_t)(this->*read_byte_priv)(addr + 1); + } + else + { + return ((vluint16_t)(this->*read_byte_priv)(addr + 1) << 8) | + (vluint16_t)(this->*read_byte_priv)(addr ); + } +} + +// Read a long +vluint32_t SDRAM::read_long(vluint32_t addr) +{ + if (mem_flags & FLAG_BIG_ENDIAN) + { + return ((vluint32_t)(this->*read_byte_priv)(addr ) << 24) | + ((vluint32_t)(this->*read_byte_priv)(addr + 1) << 16) | + ((vluint32_t)(this->*read_byte_priv)(addr + 2) << 8) | + (vluint32_t)(this->*read_byte_priv)(addr + 3); + } + else + { + return ((vluint32_t)(this->*read_byte_priv)(addr + 3) << 24) | + ((vluint32_t)(this->*read_byte_priv)(addr + 2) << 16) | + ((vluint32_t)(this->*read_byte_priv)(addr + 1) << 8) | + (vluint32_t)(this->*read_byte_priv)(addr ); + } +} + +// Read a quad +vluint64_t SDRAM::read_quad(vluint32_t addr) +{ + if (mem_flags & FLAG_BIG_ENDIAN) + { + return ((vluint64_t)(this->*read_byte_priv)(addr ) << 56) | + ((vluint64_t)(this->*read_byte_priv)(addr + 1) << 48) | + ((vluint64_t)(this->*read_byte_priv)(addr + 1) << 40) | + ((vluint64_t)(this->*read_byte_priv)(addr + 1) << 32) | + ((vluint64_t)(this->*read_byte_priv)(addr + 1) << 24) | + ((vluint64_t)(this->*read_byte_priv)(addr + 1) << 16) | + ((vluint64_t)(this->*read_byte_priv)(addr + 2) << 8) | + (vluint64_t)(this->*read_byte_priv)(addr + 3); + } + else + { + return ((vluint64_t)(this->*read_byte_priv)(addr + 3) << 56) | + ((vluint64_t)(this->*read_byte_priv)(addr + 2) << 48) | + ((vluint64_t)(this->*read_byte_priv)(addr + 2) << 40) | + ((vluint64_t)(this->*read_byte_priv)(addr + 2) << 32) | + ((vluint64_t)(this->*read_byte_priv)(addr + 2) << 24) | + ((vluint64_t)(this->*read_byte_priv)(addr + 2) << 16) | + ((vluint64_t)(this->*read_byte_priv)(addr + 1) << 8) | + (vluint64_t)(this->*read_byte_priv)(addr ); + } +} + +// Cycle evaluate +void SDRAM::eval +( + vluint64_t ts, + // Clock + vluint8_t clk, + vluint8_t cke, + // Commands + vluint8_t cs_n, + vluint8_t ras_n, + vluint8_t cas_n, + vluint8_t we_n, + // Address + vluint8_t ba, + vluint16_t addr, + // Data + vluint8_t dqm, + vluint64_t dq_in, + vluint64_t &dq_out +) +{ + // Clock enabled + if (cke) + { + // Rising edge on clock + if (clk && !(prev_clk)) + { + vluint8_t cmd; + vluint8_t a10; + + // Decode SDRAM command + if (!cs_n) + cmd = (ras_n << 2) | (cas_n << 1) | we_n; + else + cmd = CMD_NOP; + + // A[10] wire + a10 = (vluint8_t)((addr >> 10) & 1); + // Mask out extra bits + ba &= (SDRAM_NUM_BANKS - 1); + + // Command pipeline + for (int i = 0; i < CMD_PIPE_DEPTH; i++) + { + if (i == (CMD_PIPE_DEPTH - 1)) + { + cmd_pipe[i] = CMD_NOP; + col_pipe[i] = (int)0; + ba_pipe[i] = (vluint8_t)0; + bap_pipe[i] = (vluint8_t)0; + a10_pipe[i] = (vluint16_t)0; + } + else + { + cmd_pipe[i] = cmd_pipe[i+1]; + col_pipe[i] = col_pipe[i+1]; + ba_pipe[i] = ba_pipe[i+1]; + bap_pipe[i] = bap_pipe[i+1]; + a10_pipe[i] = a10_pipe[i+1]; + } + } + + // DQM pipeline + dqm_pipe[0] = dqm_pipe[1]; + dqm_pipe[1] = dqm; + + // Process SDRAM command (immediate) + switch (cmd) + { + // 000 : Load mode register + case CMD_LMR: + { + if (dbg_on) + { + printf("Load Std Mode Register @ %llu ps\n", ts); + log_size += sprintf(log_buf + log_size, "Load Std Mode Register @ %llu ps\n", ts); + } + + // CAS latency + switch((addr >> 4) & 7) + { + case 2: + { + if (dbg_on) + { + printf("CAS latency = 2 cycles\n"); + log_size += sprintf(log_buf + log_size, "CAS latency = 2 cycles\n"); + } + cas_lat = (int)2; + break; + } + case 3: + { + if (dbg_on) + { + printf("CAS latency = 3 cycles\n"); + log_size += sprintf(log_buf + log_size, "CAS latency = 3 cycles\n"); + } + cas_lat = (int)3; + break; + } + default: + { + if (dbg_on) + { + printf("CAS latency = ???\n"); + log_size += sprintf(log_buf + log_size, "CAS latency = ???\n"); + } + cas_lat = (int)0; // This disables pipelined commands + } + } + + // Burst length + switch (addr & 7) + { + case 0: + { + if (dbg_on) + { + printf("Read burst length = 1 word\n"); + log_size += sprintf(log_buf + log_size, "Read burst length = 1 word\n"); + } + bst_len_rd = (int)1; + break; + } + case 1: + { + if (dbg_on) + { + printf("Read burst length = 2 words\n"); + log_size += sprintf(log_buf + log_size, "Read burst length = 2 words\n"); + } + bst_len_rd = (int)2; + break; + } + case 2: + { + if (dbg_on) + { + printf("Read burst length = 4 words\n"); + log_size += sprintf(log_buf + log_size, "Read burst length = 4 words\n"); + } + bst_len_rd = (int)4; + break; + } + case 3: + { + if (dbg_on) + { + printf("Read burst length = 8 words\n"); + log_size += sprintf(log_buf + log_size, "Read burst length = 8 words\n"); + } + bst_len_rd = (int)8; + break; + } + case 7: + { + if (dbg_on) + { + printf("Read burst length = continuous\n"); + log_size += sprintf(log_buf + log_size, "Read burst length = continuous\n"); + } + bst_len_rd = (int)num_cols; + break; + } + default: + { + if (dbg_on) + { + printf("Read burst length = ???\n"); + log_size += sprintf(log_buf + log_size, "Read burst length = ???\n"); + } + bst_len_rd = (int)0; // This will disable burst read + } + } + + // Burst type + if (addr & 8) + { + if (dbg_on) + { + printf("Burst type = interleaved (NOT SUPPORTED !)\n"); + log_size += sprintf(log_buf + log_size, "Burst type = interleaved (NOT SUPPORTED !)\n"); + } + bst_type = (vluint8_t)1; + } + else + { + if (dbg_on) + { + printf("Burst type = sequential\n"); + log_size += sprintf(log_buf + log_size, "Burst type = sequential\n"); + } + bst_type = (vluint8_t)0; + } + + // Write burst + if (addr & 0x200) + { + if (dbg_on) + { + printf("Write burst length = 1\n"); + log_size += sprintf(log_buf + log_size, "Write burst length = 1\n"); + } + bst_len_wr = (int)1; + } + else + { + if (dbg_on) + { + if (bst_len_rd) + { + if (bst_len_rd <= (int)8) + { + printf("Write burst length = %d word(s)\n", bst_len_rd); + log_size += sprintf(log_buf + log_size, "Write burst length = %d word(s)\n", bst_len_rd); + } + else + { + printf("Write burst length = continuous\n"); + log_size += sprintf(log_buf + log_size, "Write burst length = continuous\n"); + } + } + else + { + // This disables burst write + printf("Write burst length = ???\n"); + log_size += sprintf(log_buf + log_size, "Write burst length = ???\n"); + } + } + bst_len_wr = bst_len_rd; + } + break; + } + // 001 : Auto refresh + case CMD_REF: + { + if (dbg_on) + log_size += sprintf(log_buf + log_size, "Auto Refresh @ %llu ps\n", ts); + + for (int i = 0; i < SDRAM_NUM_BANKS; i++) + { + if (!row_pre[i]) + { + printf("ERROR @ %llu ps : All banks must be Precharge before Auto Refresh\n", ts); + break; + } + } + break; + } + // 010 : Precharge + case CMD_PRE: + { + if (a10) + { + if (dbg_on) + log_size += sprintf(log_buf + log_size, "Precharge all banks @ %llu ps\n", ts); + + if (ap_bank[0] || ap_bank[1] || ap_bank[2] || ap_bank[3]) + { + printf("ERROR @ %llu ps : at least one bank is auto-precharged !\n", ts); + break; + } + + // Precharge all banks + for (int i = 0; i < SDRAM_NUM_BANKS; i++) + { + row_act[i] = 0; + row_pre[i] = 1; + } + } + else + { + if (dbg_on) + log_size += sprintf(log_buf + log_size, "Precharge bank #%d @ %llu ps\n", ba, ts); + + if (ap_bank[ba]) + { + printf("ERROR @ %llu ps : cannot apply a precharge to auto-precharged bank %d !\n", ts, ba); + break; + } + + // Precharge one bank + row_act[ba] = 0; + row_pre[ba] = 1; + } + + // Terminate a WRITE immediately + if ((a10) || (bank == (int)ba)) + bst_ctr_wr = 0; + + // CAS latency pipeline for READ + if (cas_lat) + { + cmd_pipe[cas_lat] = CMD_PRE; + bap_pipe[cas_lat] = ba; + a10_pipe[cas_lat] = a10; + } + + break; + } + // 011 : Activate + case CMD_ACT: + { + // Mask out extra bits + addr &= (num_rows - 1); + + if (dbg_on) + log_size += sprintf(log_buf + log_size, "Activate bank #%d, row #%d @ %llu ps\n", ba, addr, ts); + + if (row_act[ba]) + { + printf("ERROR @ %llu ps : bank %d already active !\n", ts, ba); + break; + } + + row_act[ba] = 1; + row_pre[ba] = 0; + row_addr[ba] = (int)addr << bit_cols; + + break; + } + // 100 : Write + case CMD_WR: + { + // Mask out extra bits + addr &= (mask_cols >> bus_log2); + + if (dbg_on) + log_size += sprintf(log_buf + log_size, "Write bank #%d, col #%d @ %llu ps\n", ba, addr, ts); + + if (!row_act[ba]) + { + printf("ERROR @ %llu ps : bank %d is not activated for WRITE !\n", ts, ba); + break; + } + + // Latch command right away + cmd_pipe[0] = CMD_WR; + col_pipe[0] = (int)addr; + ba_pipe[0] = ba; + + // Auto-precharge + ap_bank[ba] = a10; + + break; + } + // 101 : Read + case CMD_RD: + { + // Mask out extra bits + addr &= (mask_cols >> bus_log2); + + if (dbg_on) + log_size += sprintf(log_buf + log_size, "Read bank #%d, col #%d @ %llu ps\n", ba, addr, ts); + + if (!row_act[ba]) + { + printf("ERROR @ %llu ps : bank %d is not activated for READ !\n", ts, ba); + break; + } + + // CAS latency pipeline + if (cas_lat) + { + cmd_pipe[cas_lat] = CMD_RD; + col_pipe[cas_lat] = (int)addr; + ba_pipe[cas_lat] = ba; + } + + // Auto-precharge + ap_bank[ba] = a10; + + break; + } + // 110 : Burst stop + case CMD_BST: + { + if (dbg_on) + log_size += sprintf(log_buf + log_size, "Burst Stop bank #%d @ %llu ps\n", ba, ts); + + if (ap_bank[ba]) + { + printf("ERROR @ %llu ps : cannot apply a burst stop to auto-precharged bank %d !\n", ts, ba); + break; + } + + // Terminate a WRITE immediately + bst_ctr_wr = (vluint16_t)0; + + // CAS latency for READ + if (cas_lat) + { + cmd_pipe[cas_lat] = CMD_BST; + } + break; + } + // 111 : No operation + default: ; + } + + // Process SDRAM command (pipelined) + switch (cmd_pipe[0]) + { + // 010 : Precharge + case CMD_PRE: + { + if ((a10_pipe[0]) || (bap_pipe[0] == (vluint8_t)bank)) + bst_ctr_rd = (int)0; + break; + } + // 100 : Write + case CMD_WR: + { + // Bank, row and column addresses in memory array + bank = (int)ba_pipe[0]; + row = row_addr[bank] + (col_pipe[0] & ~(bst_len_wr - 1)); + col = col_pipe[0] & (bst_len_wr - 1); + bst_ctr_rd = (int)0; + bst_ctr_wr = bst_len_wr; + + if (dbg_on) + { + if (mem_flags & FLAG_BANK_INTERLEAVING) + fprintf(fh_log, "%08X : ", ((row_addr[bank] << SDRAM_BIT_BANKS) + (bank << bit_cols) + col_pipe[0]) << bus_log2); + else + fprintf(fh_log, "%08X : ", (row_addr[bank] + (bank << (bit_rows + bit_cols)) + col_pipe[0]) << bus_log2); + } + + break; + } + // 101 : Read + case CMD_RD: + { + if (dbg_on) + { + if (bst_ctr_rd) fprintf(fh_log, "\n"); + if (log_size) fprintf(fh_log, log_buf); + log_size = 0; + } + + // Bank, row and column addresses in memory array + bank = (int)ba_pipe[0]; + row = row_addr[bank] + (col_pipe[0] & ~(bst_len_rd - 1)); + col = col_pipe[0] & (bst_len_rd - 1); + bst_ctr_rd = bst_len_rd; + bst_ctr_wr = (int)0; + + if (dbg_on) + { + if (mem_flags & FLAG_BANK_INTERLEAVING) + fprintf(fh_log, "%08X : ", ((row_addr[bank] << SDRAM_BIT_BANKS) + (bank << bit_cols) + col_pipe[0]) << bus_log2); + else + fprintf(fh_log, "%08X : ", (row_addr[bank] + (bank << (bit_rows + bit_cols)) + col_pipe[0]) << bus_log2); + } + + break; + } + // 110 : Burst stop + case CMD_BST: + { + bst_ctr_rd = (int)0; + break; + } + // 111 : No operation + default: ; + } + + // Write to memory + if (bst_ctr_wr) + { + // Write MSL (if present) + if (mem_flags & DATA_MSL) + { + if (dqm & 0x80) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + mem_array_7[bank][row + col] = (vluint8_t)(dq_in >> 56); + if (dbg_on) fprintf(fh_log, "%02X", mem_array_7[bank][row + col]); + } + if (dqm & 0x40) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + mem_array_6[bank][row + col] = (vluint8_t)(dq_in >> 48); + if (dbg_on) fprintf(fh_log, "%02X", mem_array_6[bank][row + col]); + } + if (dqm & 0x20) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + mem_array_5[bank][row + col] = (vluint8_t)(dq_in >> 40); + if (dbg_on) fprintf(fh_log, "%02X", mem_array_5[bank][row + col]); + } + if (dqm & 0x10) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + mem_array_4[bank][row + col] = (vluint8_t)(dq_in >> 32); + if (dbg_on) fprintf(fh_log, "%02X", mem_array_4[bank][row + col]); + } + } + // Write MSW (if present) + if (mem_flags & DATA_MSW) + { + if (dqm & 0x08) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + mem_array_3[bank][row + col] = (vluint8_t)(dq_in >> 24); + if (dbg_on) fprintf(fh_log, "%02X", mem_array_3[bank][row + col]); + } + if (dqm & 0x04) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + mem_array_2[bank][row + col] = (vluint8_t)(dq_in >> 16); + if (dbg_on) fprintf(fh_log, "%02X", mem_array_2[bank][row + col]); + } + } + // Write MSB (if present) + if (mem_flags & DATA_MSB) + { + if (dqm & 0x02) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + mem_array_1[bank][row + col] = (vluint8_t)(dq_in >> 8); + if (dbg_on) fprintf(fh_log, "%02X", mem_array_1[bank][row + col]); + } + } + // Write LSB + if (dqm & 0x01) + { + if (dbg_on) fprintf(fh_log, "XX "); + } + else + { + mem_array_0[bank][row + col] = (vluint8_t)dq_in; + if (dbg_on) fprintf(fh_log, "%02X ", mem_array_0[bank][row + col]); + } + + // Burst counter (only sequential burst supported) + col = (col + 1) & (bst_len_wr - 1); + bst_ctr_wr--; + + // End of burst + if (bst_ctr_wr == (int)0) + { + // Auto-precharge case + if (ap_bank[bank]) + { + if (dbg_on) fprintf(fh_log, "PRE\n\n"); + ap_bank[bank] = (vluint8_t)0; + row_act[bank] = (vluint8_t)0; + row_pre[bank] = (vluint8_t)1; + } + else + { + if (dbg_on) fprintf(fh_log, "\n"); + } + if (log_size) + { + fprintf(fh_log, log_buf); + log_size = 0; + } + } + } + + // Read from memory + if (bst_ctr_rd) + { + vluint8_t dq_tmp[8]; + + dq_tmp[7] = (vluint8_t)0x00; + dq_tmp[6] = (vluint8_t)0x00; + dq_tmp[5] = (vluint8_t)0x00; + dq_tmp[4] = (vluint8_t)0x00; + dq_tmp[3] = (vluint8_t)0x00; + dq_tmp[2] = (vluint8_t)0x00; + dq_tmp[1] = (vluint8_t)0x00; + dq_tmp[0] = (vluint8_t)0x00; + + // Read MSL (if present) + if (mem_flags & DATA_MSL) + { + if (dqm_pipe[0] & 0x80) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + dq_tmp[7] = mem_array_7[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X", dq_tmp[7]); + } + if (dqm_pipe[0] & 0x40) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + dq_tmp[6] = mem_array_6[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X", dq_tmp[6]); + } + if (dqm_pipe[0] & 0x20) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + dq_tmp[5] = mem_array_5[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X", dq_tmp[5]); + } + if (dqm_pipe[0] & 0x10) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + dq_tmp[4] = mem_array_4[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X", dq_tmp[4]); + } + } + + // Read MSW (if present) + if (mem_flags & DATA_MSW) + { + if (dqm_pipe[0] & 0x08) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + dq_tmp[3] = mem_array_3[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X", dq_tmp[3]); + } + if (dqm_pipe[0] & 0x04) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + dq_tmp[2] = mem_array_2[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X", dq_tmp[2]); + } + } + + // Read MSB (if present) + if (mem_flags & DATA_MSB) + { + if (dqm_pipe[0] & 0x02) + { + if (dbg_on) fprintf(fh_log, "XX"); + } + else + { + dq_tmp[1] = mem_array_1[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X", dq_tmp[1]); + } + } + + // Read LSB + if (dqm_pipe[0] & 0x01) + { + if (dbg_on) fprintf(fh_log, "XX "); + } + else + { + dq_tmp[0] = mem_array_0[bank][row + col]; + if (dbg_on) fprintf(fh_log, "%02X ", dq_tmp[0]); + } + + dq_out = ((vluint64_t)dq_tmp[0] ) + | ((vluint64_t)dq_tmp[1] << 8 ) + | ((vluint64_t)dq_tmp[2] << 16) + | ((vluint64_t)dq_tmp[3] << 24) + | ((vluint64_t)dq_tmp[4] << 32) + | ((vluint64_t)dq_tmp[5] << 40) + | ((vluint64_t)dq_tmp[6] << 48) + | ((vluint64_t)dq_tmp[7] << 56); + + // Burst counter (only sequential supported) + col = (col + 1) & (bst_len_rd - 1); + bst_ctr_rd--; + + // End of burst + if (bst_ctr_rd == (int)0) + { + // Auto-precharge case + if (ap_bank[bank]) + { + if (dbg_on) fprintf(fh_log, "PRE\n"); + ap_bank[bank] = (vluint8_t)0; + row_act[bank] = (vluint8_t)0; + row_pre[bank] = (vluint8_t)1; + } + else + { + if (dbg_on) fprintf(fh_log, "\n"); + } + if (log_size) + { + fprintf(fh_log, log_buf); + log_size = 0; + } + } + } + } + + if ((bst_ctr_wr == (int)0) && (bst_ctr_rd == (int)0) && (log_size != (int)0)) + { + fprintf(fh_log, log_buf); + log_size = 0; + } + + // For edge detection + prev_clk = clk; + } + // Clock disabled + else + { + prev_clk = (vluint8_t)0; + } +} + +// Read a byte, interleaved banks, big endian, 8-bit SDRAM +vluint8_t SDRAM::read_byte_i_be_8(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> bit_cols; + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)); + + return mem_array_0[bank_nr][idx]; +} + +// Read a byte, interleaved banks, big endian, 16-bit SDRAM +vluint8_t SDRAM::read_byte_i_be_16(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + 1); + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)) >> 1; + + if (addr & 1) + return mem_array_0[bank_nr][idx]; + else + return mem_array_1[bank_nr][idx]; +} + +// Read a byte, interleaved banks, big endian, 32-bit SDRAM +vluint8_t SDRAM::read_byte_i_be_32(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + 2); + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)) >> 2; + + switch (addr & 3) + { + case 0 : return mem_array_3[bank_nr][idx]; + case 1 : return mem_array_2[bank_nr][idx]; + case 2 : return mem_array_1[bank_nr][idx]; + case 3 : return mem_array_0[bank_nr][idx]; + } + return 0; +} + +// Read a byte, interleaved banks, big endian, 64-bit SDRAM +vluint8_t SDRAM::read_byte_i_be_64(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + 3); + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)) >> 3; + + switch (addr & 7) + { + case 0 : return mem_array_7[bank_nr][idx]; + case 1 : return mem_array_6[bank_nr][idx]; + case 2 : return mem_array_5[bank_nr][idx]; + case 3 : return mem_array_4[bank_nr][idx]; + case 4 : return mem_array_3[bank_nr][idx]; + case 5 : return mem_array_2[bank_nr][idx]; + case 6 : return mem_array_1[bank_nr][idx]; + case 7 : return mem_array_0[bank_nr][idx]; + } + return 0; +} + +// Read a byte, interleaved banks, little endian, 8-bit SDRAM +vluint8_t SDRAM::read_byte_i_le_8(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> bit_cols; + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)); + + return mem_array_0[bank_nr][idx]; +} + +// Read a byte, interleaved banks, little endian, 16-bit SDRAM +vluint8_t SDRAM::read_byte_i_le_16(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + 1); + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)) >> 1; + + if (addr & 1) + return mem_array_1[bank_nr][idx]; + else + return mem_array_0[bank_nr][idx]; +} + +// Read a byte, interleaved banks, little endian, 32-bit SDRAM +vluint8_t SDRAM::read_byte_i_le_32(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + 2); + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)) >> 2; + + switch (addr & 3) + { + case 0 : return mem_array_0[bank_nr][idx]; + case 1 : return mem_array_1[bank_nr][idx]; + case 2 : return mem_array_2[bank_nr][idx]; + case 3 : return mem_array_3[bank_nr][idx]; + } + return 0; +} + +// Read a byte, interleaved banks, little endian, 64-bit SDRAM +vluint8_t SDRAM::read_byte_i_le_64(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + 3); + idx = (int)((addr & mask_cols) | ((addr & mask_rows) >> SDRAM_BIT_BANKS)) >> 3; + + switch (addr & 7) + { + case 0 : return mem_array_0[bank_nr][idx]; + case 1 : return mem_array_1[bank_nr][idx]; + case 2 : return mem_array_2[bank_nr][idx]; + case 3 : return mem_array_3[bank_nr][idx]; + case 4 : return mem_array_4[bank_nr][idx]; + case 5 : return mem_array_5[bank_nr][idx]; + case 6 : return mem_array_6[bank_nr][idx]; + case 7 : return mem_array_7[bank_nr][idx]; + } + return 0; +} + +// Read a byte, contiguous banks, big endian, 8-bit SDRAM +vluint8_t SDRAM::read_byte_c_be_8(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows); + idx = (int)(addr & (mask_cols | mask_rows)); + + return mem_array_0[bank_nr][idx]; +} + +// Read a byte, contiguous banks, big endian, 16-bit SDRAM +vluint8_t SDRAM::read_byte_c_be_16(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows + 1); + idx = (int)(addr & (mask_cols | mask_rows)) >> 1; + + if (addr & 1) + return mem_array_0[bank_nr][idx]; + else + return mem_array_1[bank_nr][idx]; +} + +// Read a byte, contiguous banks, big endian, 32-bit SDRAM +vluint8_t SDRAM::read_byte_c_be_32(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows + 2); + idx = (int)(addr & (mask_cols | mask_rows)) >> 2; + + switch (addr & 3) + { + case 0 : return mem_array_3[bank_nr][idx]; + case 1 : return mem_array_2[bank_nr][idx]; + case 2 : return mem_array_1[bank_nr][idx]; + case 3 : return mem_array_0[bank_nr][idx]; + } + return 0; +} + +// Read a byte, contiguous banks, big endian, 64-bit SDRAM +vluint8_t SDRAM::read_byte_c_be_64(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows + 3); + idx = (int)(addr & (mask_cols | mask_rows)) >> 3; + + switch (addr & 7) + { + case 0 : return mem_array_7[bank_nr][idx]; + case 1 : return mem_array_6[bank_nr][idx]; + case 2 : return mem_array_5[bank_nr][idx]; + case 3 : return mem_array_4[bank_nr][idx]; + case 4 : return mem_array_3[bank_nr][idx]; + case 5 : return mem_array_2[bank_nr][idx]; + case 6 : return mem_array_1[bank_nr][idx]; + case 7 : return mem_array_0[bank_nr][idx]; + } + return 0; +} + +// Read a byte, contiguous banks, little endian, 8-bit SDRAM +vluint8_t SDRAM::read_byte_c_le_8(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows); + idx = (int)(addr & (mask_cols | mask_rows)); + + return mem_array_0[bank_nr][idx]; +} + +// Read a byte, contiguous banks, little endian, 16-bit SDRAM +vluint8_t SDRAM::read_byte_c_le_16(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows + 1); + idx = (int)(addr & (mask_cols | mask_rows)) >> 1; + + if (addr & 1) + return mem_array_1[bank_nr][idx]; + else + return mem_array_0[bank_nr][idx]; +} + +// Read a byte, contiguous banks, little endian, 32-bit SDRAM +vluint8_t SDRAM::read_byte_c_le_32(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows + 2); + idx = (int)(addr & (mask_cols | mask_rows)) >> 2; + + switch (addr & 3) + { + case 0 : return mem_array_0[bank_nr][idx]; + case 1 : return mem_array_1[bank_nr][idx]; + case 2 : return mem_array_2[bank_nr][idx]; + case 3 : return mem_array_3[bank_nr][idx]; + } + return 0; +} + +// Read a byte, contiguous banks, little endian, 64-bit SDRAM +vluint8_t SDRAM::read_byte_c_le_64(vluint32_t addr) +{ + int bank_nr; // Bank number (0 to 3) + int idx; // Array index (0 to num_cols * num_rows - 1) + + bank_nr = (int)(addr & mask_bank) >> (bit_cols + bit_rows + 3); + idx = (int)(addr & (mask_cols | mask_rows)) >> 3; + + switch (addr & 7) + { + case 0 : return mem_array_0[bank_nr][idx]; + case 1 : return mem_array_1[bank_nr][idx]; + case 2 : return mem_array_2[bank_nr][idx]; + case 3 : return mem_array_3[bank_nr][idx]; + case 4 : return mem_array_4[bank_nr][idx]; + case 5 : return mem_array_5[bank_nr][idx]; + case 6 : return mem_array_6[bank_nr][idx]; + case 7 : return mem_array_7[bank_nr][idx]; + } + return 0; +} +/* + + Silice FPGA language and compiler + (c) Sylvain Lefebvre - @sylefeb + +This work and all associated files are under the + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + +A copy of the license full text is included in +the distribution, please refer to it for details. + +(header_1_0) +*/ +// Sylvain Lefebvre 2019-09-26 + +#pragma once + +#include "verilated.h" + +class VideoOut; + +/// \brief Isolates the implementation to simplify build +class VgaChip +{ +private: + + VideoOut *m_VideoOut = nullptr; + +public: + + VgaChip(int color_depth); + ~VgaChip(); + + void eval(vluint8_t clk, + vluint8_t vs, + vluint8_t hs, + vluint8_t red, + vluint8_t green, + vluint8_t blue); + +}; + +cmake_minimum_required(VERSION 2.6) +project(verilator_silice) + +# find_package(verilator) ? + +INCLUDE_DIRECTORIES( + ${PROJECT_SOURCE_DIR}/ + ${PROJECT_SOURCE_DIR}/../../src/libs/LibSL-small/src + ${PROJECT_SOURCE_DIR}/../../src/libs/LibSL-small/src/LibSL + $ENV{VERILATOR_ROOT}/include +) + +add_definitions(-Wfatal-errors) + +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") +# hack to deal with https://github.com/verilator/verilator/issues/2502 +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +endif() + +ADD_LIBRARY(verilator_silice + video_out.cpp + video_out.h + sdr_sdram.cpp + sdr_sdram.h + VgaChip.cpp + VgaChip.h + ../../src/libs/LibSL-small/src/LibSL/System/System.cpp + ../../src/libs/LibSL-small/src/LibSL/CppHelpers/CppHelpers.cpp + ../../src/libs/LibSL-small/src/LibSL/StlHelpers/StlHelpers.cpp + ../../src/libs/LibSL-small/src/LibSL/Math/Math.cpp + ../../src/libs/LibSL-small/src/LibSL/Math/Vertex.cpp + ../../src/libs/LibSL-small/src/LibSL/Image/Image.cpp + ../../src/libs/LibSL-small/src/LibSL/Image/ImageFormat_TGA.cpp + ../../src/libs/LibSL-small/src/LibSL/Image/tga.cpp +) + +INSTALL(TARGETS verilator_silice ARCHIVE DESTINATION ${CMAKE_SOURCE_DIR}) + +/* + + Silice FPGA language and compiler + (c) Sylvain Lefebvre - @sylefeb + +This work and all associated files are under the + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + +A copy of the license full text is included in +the distribution, please refer to it for details. + +(header_1_0) +*/ +// +// Implements VGA emulation for Verilator. +// Emulates front/back porch on horizontal and vertical synch. +// +// Based on code from the MCC216 project (https://github.com/fredrequin/fpga_1943) +// (c) Frederic Requin, GPL v3 license +// + +#pragma once + +#include "verilated.h" +#include "LibSL/Image/Image.h" + +#define HS_POS_POL 1 +#define HS_NEG_POL 0 +#define VS_POS_POL 2 +#define VS_NEG_POL 0 + +class VideoOut +{ + public: + + // Constructor and destructor + VideoOut( + vluint8_t debug, + vluint8_t depth, + vluint8_t polarity, + vluint16_t hactive, vluint16_t hfporch_, vluint16_t hspulse_, vluint16_t hbporch_, + vluint16_t vactive, vluint16_t vfporch_, vluint16_t vspulse_, vluint16_t vbporch_, + const char *file); + ~VideoOut(); + // Methods + void eval_RGB_HV(vluint8_t clk, vluint8_t vs, vluint8_t hs, vluint8_t red, vluint8_t green, vluint8_t blue); + vluint16_t get_hcount(); + vluint16_t get_vcount(); + private: + // Color depth + int bit_shift; + vluint8_t bit_mask; + // Synchros polarities + vluint8_t hs_pol; + vluint8_t vs_pol; + // Debug mode + vluint8_t dbg_on; + // H synch + vluint16_t hfporch; + vluint16_t hspulse; + vluint16_t hbporch; + // V synch + vluint16_t vfporch; + vluint16_t vspulse; + vluint16_t vbporch; + // Image format + vluint16_t hor_size; + vluint16_t ver_size; + // Pixel array + LibSL::Memory::Array::Array2D pixels; + // Image file name + std::string filename; + // Internal variable + vluint16_t hcount; + vluint16_t vcount; + vluint8_t prev_clk; + vluint8_t prev_hs; + vluint8_t prev_vs; + int dump_ctr; + + enum e_Synch {e_Front=0,e_SynchPulseUp=1,e_SynchPulseDown=2,e_Back=3,e_Done=4}; + + e_Synch v_sync_stage; + e_Synch h_sync_stage; + int v_sync_count; + int h_sync_count; +}; + +{ + "boards" : [ + { + "name" : "icarus" + }, + { + "name" : "verilator" + }, + { + "name" : "icebreaker" + }, + { + "name" : "icestick" + }, + { + "name" : "ulx3s" + }, + { + "name" : "de10nano" + }, + { + "name" : "orangecrab" + }, + { + "name" : "crosslink_nx_evn" + }, + { + "name" : "fomu" + }, + { + "name" : "mojov3" + }, + { + "name" : "techgraph" + }, + { + "name" : "8bitworkshop" + } + ] +} +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR +case "$(uname -s)" in +MINGW*) +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins +;; +*) +esac + +cd $BUILD_DIR + +rm build* + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +yosys -q -p "synth_ice40 -json build.json" build.v +nextpnr-ice40 --up5k --freq 13 --package sg48 --json build.json --pcf $BOARD_DIR/icebreaker.pcf --asc build.asc + +icepack build.asc build.bin +iceprog build.bin +# ---------------------------------------------------------------------------- +# +# Icebreaker constraint file (.pcf) +# Pinout: +# https://github.com/icebreaker-fpga/icebreaker/blob/master/img/icebreaker-v1_0b-legend.jpg +# Link +# https://1bitsquared.com/collections/fpga/products/icebreaker +# +# ---------------------------------------------------------------------------- + +# -------------------------- SYSTEM CLOCK ------------------------------------ +set_io -nowarn CLK 35 + +# ------------------------------ UART ---------------------------------------- +set_io -nowarn RX 6 +set_io -nowarn TX 9 + +# ------------------------- LEDs and Button ---------------------------------- +set_io -nowarn BTN_N 10 +set_io -nowarn LEDR_N 11 +set_io -nowarn LEDG_N 37 + +# --------------------------- SPI Flash -------------------------------------- +set_io -nowarn FLASH_SCK 15 +set_io -nowarn FLASH_SSB 16 +set_io -nowarn FLASH_IO0 14 +set_io -nowarn FLASH_IO1 17 +set_io -nowarn FLASH_IO2 12 +set_io -nowarn FLASH_IO3 13 + +# ------------ Leds and Buttons (PMOD 2) ------------------------------------- +set_io -nowarn LED1 26 +set_io -nowarn LED2 27 +set_io -nowarn LED3 25 +set_io -nowarn LED4 23 +set_io -nowarn LED5 21 +set_io -nowarn BTN1 20 +set_io -nowarn BTN2 19 +set_io -nowarn BTN3 18 + +# ------------ PMOD1A connector ---------------------------------------------- +set_io -nowarn P1A1 4 +set_io -nowarn P1A2 2 +set_io -nowarn P1A3 47 +set_io -nowarn P1A4 45 +set_io -nowarn P1A7 3 +set_io -nowarn P1A8 48 +set_io -nowarn P1A9 46 +set_io -nowarn P1A10 44 + +# ------------ PMOD1B connector ---------------------------------------------- +set_io -nowarn P1B1 43 +set_io -nowarn P1B2 38 +set_io -nowarn P1B3 34 +set_io -nowarn P1B4 31 +set_io -nowarn P1B7 42 +set_io -nowarn P1B8 36 +set_io -nowarn P1B9 32 +set_io -nowarn P1B10 28 + +# ------------ Leds and Buttons (PMOD 2) ------------------------------------- +set_io -nowarn P2_1 27 +set_io -nowarn P2_2 25 +set_io -nowarn P2_3 21 +set_io -nowarn P2_4 19 +set_io -nowarn P2_7 26 +set_io -nowarn P2_8 23 +set_io -nowarn P2_9 20 +set_io -nowarn P2_10 18 +{ + "name": "icebreaker", + "variants": [ + { + "name" : "configurable", + "framework" : "icebreaker.v", + "pins" : [ + {"set" : "basic"}, + {"set" : "buttons", "define" : "BUTTONS=1"}, + {"set" : "uart", "define" : "UART=1"}, + {"set" : "vga", "define" : "VGA=1"} + ], + "builders": [ + { + "builder" : "edalize", + "description": "Build using Edalize", + "tool": "icestorm", + "tool_options": [ + { + "nextpnr_options": ["--up5k", "--freq 13", "--package sg48", "--timing-allow-fail"], + "pnr": "next" + } + ], + "bitstream" : "build.bin", + "constraints": [{"name": "icebreaker.pcf", "file_type": "PCF"}], + "program": [{"cmd" : "iceprog", "args" : "build.bin"}] + }, + { + "builder" : "shell", + "command" : "icebreaker.sh", + "description": "Custom shell scripts using yosys and nextpnr" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint5", + "io": "output" + } + ], + "buttons": [ + { + "name": "btns", + "type": "uint3", + "io": "input" + } + ], + "uart": [ + { + "name": "uart_tx", + "type": "uint1", + "io" : "output" + }, + { + "name": "uart_rx", + "type": "uint1", + "io" : "input" + } + ], + "vga": [ + { + "name": "vga_hs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_vs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_r", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_g", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_b", + "type": "uint6", + "io": "output" + } + ] + } +} +`define ICEBREAKER 1 +`default_nettype none +$$ICEBREAKER=1 +$$HARDWARE=1 +$$NUM_LEDS=5 +$$NUM_BTNS=3 +$$VGA=1 +$$color_depth=6 +$$color_max =63 +$$config['bram_wenable_width'] = 'data' +$$config['dualport_bram_wenable0_width'] = 'data' +$$config['dualport_bram_wenable1_width'] = 'data' + +module top( + output LED1, + output LED2, + output LED3, + output LED4, + output LED5, +`ifdef BUTTONS + input BTN1, + input BTN2, + input BTN3, +`endif +`ifdef UART + output TX, + input RX, +`endif +`ifdef VGA + output P1A1, // r0 + output P1A2, // r1 + output P1A3, // r2 + output P1A4, // r3 + + output P1A7, // b0 + output P1A8, // b1 + output P1A9, // b2 + output P1A10, // b3 + + output P1B1, // g0 + output P1B2, // g1 + output P1B3, // g2 + output P1B4, // g3 + + output P1B7, // hs + output P1B8, // vs +`endif + input CLK + ); + +wire [4:0] __main_leds; + +// clock from design is used in case +// it relies on a PLL: in such cases +// we cannot use the clock fed into +// the PLL here +wire design_clk; + +`ifdef VGA +wire __main_out_vga_hs; +wire __main_out_vga_vs; +wire __main_out_vga_v0; +wire [5:0] __main_out_vga_r; +wire [5:0] __main_out_vga_g; +wire [5:0] __main_out_vga_b; +`endif + +reg ready = 0; +reg [31:0] RST_d; +reg [31:0] RST_q; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge design_clk) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 32'b111111111111111111111111111111; + end +end + +wire run_main; +assign run_main = 1'b1; + +M_main __main( + .clock(CLK), + .out_clock(design_clk), + .reset(RST_d[0]), + .out_leds(__main_leds), +`ifdef BUTTONS + .in_btns({BTN3,BTN2,BTN1}), +`endif +`ifdef UART + .out_uart_tx(TX), + .in_uart_rx(RX), +`endif +`ifdef VGA + .out_video_hs(__main_out_vga_hs), + .out_video_vs(__main_out_vga_vs), + .out_video_r(__main_out_vga_r), + .out_video_g(__main_out_vga_g), + .out_video_b(__main_out_vga_b), +`endif + .in_run(run_main) +); + +assign LED1 = __main_leds[0+:1]; +assign LED2 = __main_leds[1+:1]; +assign LED3 = __main_leds[2+:1]; +assign LED4 = __main_leds[3+:1]; +assign LED5 = __main_leds[4+:1]; + +`ifdef VGA +assign P1A1 = __main_out_vga_r[2+:1]; +assign P1A2 = __main_out_vga_r[3+:1]; +assign P1A3 = __main_out_vga_r[4+:1]; +assign P1A4 = __main_out_vga_r[5+:1]; + +assign P1A7 = __main_out_vga_b[2+:1]; +assign P1A8 = __main_out_vga_b[3+:1]; +assign P1A9 = __main_out_vga_b[4+:1]; +assign P1A10 = __main_out_vga_b[5+:1]; + +assign P1B1 = __main_out_vga_g[2+:1]; +assign P1B2 = __main_out_vga_g[3+:1]; +assign P1B3 = __main_out_vga_g[4+:1]; +assign P1B4 = __main_out_vga_g[5+:1]; + +assign P1B7 = __main_out_vga_hs; +assign P1B8 = __main_out_vga_vs; +`endif + +endmodule +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR +case "$(uname -s)" in +MINGW*) +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins +;; +*) +esac + +cd $BUILD_DIR + +rm build* + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +yosys -p 'synth_ecp5 -abc9 -json build.json' build.v + +nextpnr-ecp5 --25k --package CSFBGA285 --json build.json --textcfg build.config --lpf $BOARD_DIR/pinout.lpf --timing-allow-fail --freq 38.8 + +ecppack --freq 38.8 --compress build.config build.bit + +cp build.bit build.dfu +dfu-suffix -v 1209 -p 5af0 -a build.dfu +dfu-util -D build.dfu +`define ORANGECRAB 1 +`default_nettype none +$$ORANGECRAB=1 +$$HARDWARE=1 +$$NUM_LEDS=3 + +module top( + input CLK, // 38.8 MHz + // bare + output [2:0] LED + ); + +// input/output wires + +wire [2:0] __main_out_leds; + +assign LED = __main_out_leds; + +// reset + +reg ready = 0; + +reg [15:0] RST_d; +reg [15:0] RST_q; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge CLK) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 16'b1111111111111111; + end +end + +// main + +wire run_main; +assign run_main = 1'b1; + +M_main __main( + .clock (CLK), + .reset (RST_q[0]), + .in_run (run_main), + .out_leds (__main_out_leds) +); + +endmodule +{ + "name": "orangecrab", + "variants": [ + { + "name" : "r2_0", + "framework" : "orangecrab.v", + "pins" : [ + {"set" : "basic"} + ], + "builders": [ + { + "builder" : "edalize", + "description": "Build using Edalize", + "tool": "trellis", + "tool_options": [ + { + "nextpnr_options": ["--25k", "--freq 38.8", "--package CSFBGA285", "--timing-allow-fail"], + "pnr": "next" + } + ], + "bitstream" : "build.dfu", + "constraints": [{"name": "pinout.lpf", "file_type": "LPF"}], + "program": [ + {"cmd" : "cp", "args" : "build.bit build.dfu"}, + {"cmd" : "dfu-suffix", "args" : "-v 1209 -p 5af0 -a build.dfu"}, + {"cmd" : "dfu-util", "args" : "-D build.dfu"} + ] + }, + { + "builder" : "shell", + "command" : "orangecrab.sh", + "description": "Custom shell scripts using yosys and nextpnr" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "led", + "type": "uint3", + "io": "output" + } + ] + } +} +# base on https://github.com/FPGAwars/icestudio/blob/develop/app/resources/boards/orangecrab-r02-25f/pinout.lpf + +LOCATE COMP "CLK" SITE "A9"; # input +IOBUF PORT "CLK" IO_TYPE=LVCMOS33; + +LOCATE COMP "LED[0]" SITE "K4"; # output +LOCATE COMP "LED[1]" SITE "M3"; # output +LOCATE COMP "LED[2]" SITE "J3"; # output + +LOCATE COMP "RST" SITE "T15"; # inout +LOCATE COMP "A[0]" SITE "L4"; # inout +LOCATE COMP "A[1]" SITE "N3"; # inout +LOCATE COMP "A[2]" SITE "N4"; # inout +LOCATE COMP "A[3]" SITE "H4"; # inout +LOCATE COMP "A[4]" SITE "G4"; # inout +LOCATE COMP "A[5]" SITE "T17"; # inout +LOCATE COMP "SCK" SITE "R17"; # inout +LOCATE COMP "MOSI" SITE "N16"; # inout +LOCATE COMP "MISO" SITE "N15"; # inout +LOCATE COMP "G[0]" SITE "N17"; # inout +LOCATE COMP "G[1]" SITE "M18"; # inout +LOCATE COMP "SDA" SITE "C10"; # inout +LOCATE COMP "SCL" SITE "C9"; # inout +LOCATE COMP "G[5]" SITE "B10"; # inout +LOCATE COMP "G[6]" SITE "B9"; # inout +LOCATE COMP "G[9]" SITE "C8"; # inout +LOCATE COMP "G[10]" SITE "B8"; # inout +LOCATE COMP "G[11]" SITE "A8"; # inout +LOCATE COMP "G[12]" SITE "H2"; # inout +LOCATE COMP "G[13]" SITE "J2"; # inout + +# TODO: add PROGRAMN and PULLMODEs if any + +IOBUF PORT "LED[0]" IO_TYPE=LVCMOS33; +IOBUF PORT "LED[1]" IO_TYPE=LVCMOS33; +IOBUF PORT "LED[2]" IO_TYPE=LVCMOS33; + +IOBUF PORT "RST" IO_TYPE=LVCMOS33; +IOBUF PORT "A[0]" IO_TYPE=LVCMOS33; +IOBUF PORT "A[1]" IO_TYPE=LVCMOS33; +IOBUF PORT "A[2]" IO_TYPE=LVCMOS33; +IOBUF PORT "A[3]" IO_TYPE=LVCMOS33; +IOBUF PORT "A[4]" IO_TYPE=LVCMOS33; +IOBUF PORT "A[5]" IO_TYPE=LVCMOS33; +IOBUF PORT "SCK" IO_TYPE=LVCMOS33; +IOBUF PORT "MOSI" IO_TYPE=LVCMOS33; +IOBUF PORT "MISO" IO_TYPE=LVCMOS33; +IOBUF PORT "G[0]" IO_TYPE=LVCMOS33; +IOBUF PORT "G[1]" IO_TYPE=LVCMOS33; +IOBUF PORT "SDA" IO_TYPE=LVCMOS33; +IOBUF PORT "SCL" IO_TYPE=LVCMOS33; +IOBUF PORT "G[5]" IO_TYPE=LVCMOS33; +IOBUF PORT "G[6]" IO_TYPE=LVCMOS33; +IOBUF PORT "G[9]" IO_TYPE=LVCMOS33; +IOBUF PORT "G[10]" IO_TYPE=LVCMOS33; +IOBUF PORT "G[11]" IO_TYPE=LVCMOS33; +IOBUF PORT "G[12]" IO_TYPE=LVCMOS33; +IOBUF PORT "G[13]" IO_TYPE=LVCMOS33; +#============================================================ +# Additional settings +#============================================================ + +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION ON +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION ON + +#============================================================ +# Clocks +#============================================================ + +# set_location_assignment PIN_V11 -to clk +# set_location_assignment PIN_E11 -to clk +set_location_assignment PIN_Y13 -to clk +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to clk + +#============================================================ +# LEDs +#============================================================ + +set_location_assignment PIN_W15 -to leds[0] +set_location_assignment PIN_AA24 -to leds[1] +set_location_assignment PIN_V16 -to leds[2] +set_location_assignment PIN_V15 -to leds[3] +set_location_assignment PIN_AF26 -to leds[4] +set_location_assignment PIN_AE26 -to leds[5] +set_location_assignment PIN_Y16 -to leds[6] +set_location_assignment PIN_AA23 -to leds[7] + +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to leds* + +#============================================================ +# Keypad +#============================================================ + +set_location_assignment PIN_AC24 -to kpadC[0] +set_location_assignment PIN_AD26 -to kpadC[1] +set_location_assignment PIN_AF28 -to kpadC[2] +set_location_assignment PIN_AF27 -to kpadC[3] +set_location_assignment PIN_Y15 -to kpadR[0] +set_location_assignment PIN_AA15 -to kpadR[1] +set_location_assignment PIN_AG28 -to kpadR[2] +set_location_assignment PIN_AE25 -to kpadR[3] + +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to kpadC* +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to kpadR* +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to kpadR* + +#============================================================ +# Switches and Buttons +#============================================================ + +set_location_assignment PIN_AH24 -to btns[0] +set_location_assignment PIN_AG25 -to btns[1] +set_location_assignment PIN_AG23 -to btns[2] +set_location_assignment PIN_AH17 -to btns[3] +set_location_assignment PIN_AH16 -to btns[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to btns* + +#============================================================ +# VGA (I/O board compatible) +#============================================================ + +set_location_assignment PIN_AE17 -to vga_r[0] +set_location_assignment PIN_AE20 -to vga_r[1] +set_location_assignment PIN_AF20 -to vga_r[2] +set_location_assignment PIN_AH18 -to vga_r[3] +set_location_assignment PIN_AH19 -to vga_r[4] +set_location_assignment PIN_AF21 -to vga_r[5] + +set_location_assignment PIN_AE19 -to vga_g[0] +set_location_assignment PIN_AG15 -to vga_g[1] +set_location_assignment PIN_AF18 -to vga_g[2] +set_location_assignment PIN_AG18 -to vga_g[3] +set_location_assignment PIN_AG19 -to vga_g[4] +set_location_assignment PIN_AG20 -to vga_g[5] + +set_location_assignment PIN_AG21 -to vga_b[0] +set_location_assignment PIN_AA20 -to vga_b[1] +set_location_assignment PIN_AE22 -to vga_b[2] +set_location_assignment PIN_AF22 -to vga_b[3] +set_location_assignment PIN_AH23 -to vga_b[4] +set_location_assignment PIN_AH21 -to vga_b[5] + +set_location_assignment PIN_AH22 -to vga_hs +set_location_assignment PIN_AG24 -to vga_vs + +set_location_assignment PIN_AH27 -to vga_en +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to vga_en + +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to vga_* +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to vga_* + +#============================================================ +# SDRAM +#============================================================ + +set_location_assignment PIN_Y11 -to SDRAM_A[0] +set_location_assignment PIN_AA26 -to SDRAM_A[1] +set_location_assignment PIN_AA13 -to SDRAM_A[2] +set_location_assignment PIN_AA11 -to SDRAM_A[3] +set_location_assignment PIN_W11 -to SDRAM_A[4] +set_location_assignment PIN_Y19 -to SDRAM_A[5] +set_location_assignment PIN_AB23 -to SDRAM_A[6] +set_location_assignment PIN_AC23 -to SDRAM_A[7] +set_location_assignment PIN_AC22 -to SDRAM_A[8] +set_location_assignment PIN_C12 -to SDRAM_A[9] +set_location_assignment PIN_AB26 -to SDRAM_A[10] +set_location_assignment PIN_AD17 -to SDRAM_A[11] +set_location_assignment PIN_D12 -to SDRAM_A[12] +set_location_assignment PIN_Y17 -to SDRAM_BA[0] +set_location_assignment PIN_AB25 -to SDRAM_BA[1] +set_location_assignment PIN_E8 -to SDRAM_DQ[0] +set_location_assignment PIN_V12 -to SDRAM_DQ[1] +set_location_assignment PIN_D11 -to SDRAM_DQ[2] +set_location_assignment PIN_W12 -to SDRAM_DQ[3] +set_location_assignment PIN_AH13 -to SDRAM_DQ[4] +set_location_assignment PIN_D8 -to SDRAM_DQ[5] +set_location_assignment PIN_AH14 -to SDRAM_DQ[6] +set_location_assignment PIN_AF7 -to SDRAM_DQ[7] +set_location_assignment PIN_AE24 -to SDRAM_DQ[8] +set_location_assignment PIN_AD23 -to SDRAM_DQ[9] +set_location_assignment PIN_AE6 -to SDRAM_DQ[10] +set_location_assignment PIN_AE23 -to SDRAM_DQ[11] +set_location_assignment PIN_AG14 -to SDRAM_DQ[12] +set_location_assignment PIN_AD5 -to SDRAM_DQ[13] +set_location_assignment PIN_AF4 -to SDRAM_DQ[14] +set_location_assignment PIN_AH3 -to SDRAM_DQ[15] +set_location_assignment PIN_AG13 -to SDRAM_DQML +set_location_assignment PIN_AF13 -to SDRAM_DQMH +set_location_assignment PIN_AD20 -to SDRAM_CLK +set_location_assignment PIN_AG10 -to SDRAM_CKE +set_location_assignment PIN_AA19 -to SDRAM_nWE +set_location_assignment PIN_AA18 -to SDRAM_nCAS +set_location_assignment PIN_Y18 -to SDRAM_nCS +set_location_assignment PIN_W14 -to SDRAM_nRAS + +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_* +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_* +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_* +set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[*] +set_instance_assignment -name FAST_INPUT_REGISTER ON -to SDRAM_DQ[*] +set_instance_assignment -name ALLOW_SYNCH_CTRL_USAGE OFF -to *|SDRAM_* +set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQML +set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQMH + +#============================================================ +# UART +#============================================================ + +set_location_assignment PIN_AG11 -to uart_rx +set_location_assignment PIN_AH9 -to uart_tx +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to uart_rx +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to uart_tx + +set_location_assignment PIN_AG8 -to uart2_rx +set_location_assignment PIN_AH8 -to uart2_tx +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to uart2_rx +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to uart2_tx +{ + "name": "de10nano", + "variants": [ + { + "name": "configurable", + "framework" : "de10nano.v", + "pins": [ + {"set" : "basic"}, + {"set" : "buttons","define" : "BUTTONS=1"}, + {"set" : "vga", "define" : "VGA=1"}, + {"set" : "sdram", "define" : "SDRAM=1"}, + {"set" : "uart", "define" : "UART=1"}, + {"set" : "uart2", "define" : "UART2=1"}, + {"set" : "keypad", "define" : "KEYPAD=1"} + ], + "builders": [ + { + "builder" : "edalize", + "description": "Build using Edalize", + "tool": "quartus", + "tool_options": [ + { + "family": "Cyclone V", + "device": "5CSEBA6U23I7", + "cable" : "DE-SoC", + "board_device_index" : 2 + } + ], + "toplevel" : "top", + "bitstream" : "build.sof", + "constraints": [ + {"name": "build.sdc", "file_type": "SDC"}, + {"name": "pins.tcl", "file_type": "tclSource"} + ], + "program": [ + {"cmd" : "quartus_pgm", "args" : "-m jtag -o \"p;build.sof@2\""} + ] + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint8", + "io" : "output" + } + ], + "uart": [ + { + "name": "uart_tx", + "type": "uint1", + "io" : "output" + }, + { + "name": "uart_rx", + "type": "uint1", + "io" : "input" + } + ], + "uart2": [ + { + "name": "tx", + "type": "uint1", + "io" : "output" + }, + { + "name": "rx", + "type": "uint1", + "io" : "input" + } + ], + "keypad" : [ + { + "name": "kpadC", + "type": "uint4", + "io" : "output" + }, + { + "name": "kpadR", + "type": "uint4", + "io" : "input" + } + ], + "buttons" : [ + { + "name": "btns", + "type": "uint5", + "io" : "input" + } + ], + "sdram": [ + { + "name": "sdram_dq", + "type": "uint16", + "io": "inout" + }, + { + "name": "sdram_clk", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_cle", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_dqm", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_cs", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_we", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_cas", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_ras", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_ba", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_a", + "type": "uint1", + "io": "output" + } + ], + "vga": [ + { + "name": "vga_hs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_vs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_r", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_g", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_b", + "type": "uint6", + "io": "output" + } + ] + } +} +# inform quartus that the clk port brings a 50MHz clock into our design so +# that timing closure on our design can be analyzed + +create_clock -name clk -period "50MHz" [get_ports clk] +derive_pll_clocks -create_base_clocks +derive_clock_uncertainty + +# inform quartus that the LED output port has no critical timing requirements +# its a single output port driving an LED, there are no timing relationships +# that are critical for this + +set_false_path -from * -to [get_ports leds[0]] +set_false_path -from * -to [get_ports leds[1]] +set_false_path -from * -to [get_ports leds[2]] +set_false_path -from * -to [get_ports leds[3]] +set_false_path -from * -to [get_ports leds[4]] +set_false_path -from * -to [get_ports leds[5]] +set_false_path -from * -to [get_ports leds[6]] +set_false_path -from * -to [get_ports leds[7]] +`define DE10NANO 1 +$$DE10NANO = 1 +$$HARDWARE = 1 +$$NUM_LEDS = 8 +$$NUM_BTNS = 5 +$$if YOSYS then +$$config['bram_wenable_width'] = 'data' +$$config['dualport_bram_wenable0_width'] = 'data' +$$config['dualport_bram_wenable1_width'] = 'data' +$$else +$$config['dualport_bram_template'] = 'dualport_bram_altera.v.in' +$$end +$$color_depth = 6 +$$color_max = 63 + +`ifdef UART +`ifdef UART2 + `error_choose_either_uart_or_uart2 +`endif +`endif + +module top( + output [7:0] leds, +`ifdef BUTTONS + // buttons + input [4:0] btns, +`endif +`ifdef SDRAM + // sdram + output SDRAM_CLK, + output SDRAM_CKE, + output SDRAM_DQML, + output SDRAM_DQMH, + output SDRAM_nCS, + output SDRAM_nWE, + output SDRAM_nCAS, + output SDRAM_nRAS, + output [1:0] SDRAM_BA, + output [12:0] SDRAM_A, + inout [15:0] SDRAM_DQ, +`endif +`ifdef VGA + // vga + output vga_hs, + output vga_vs, + output [5:0] vga_r, + output [5:0] vga_g, + output [5:0] vga_b, +`endif +`ifdef UART + // uart + input uart_rx, + output uart_tx, +`endif +`ifdef UART2 + // uart, second choice + input uart2_rx, + output uart2_tx, +`endif +`ifdef KEYPAD + // keypad + output [3:0] kpadC, + input [3:0] kpadR, +`endif + // clock + input clk +); + +wire [7:0] __main_out_leds; + +`ifdef SDRAM +wire __main_out_sdram_clk; +wire __main_out_sdram_cle; +wire [1:0] __main_out_sdram_dqm; +wire __main_out_sdram_cs; +wire __main_out_sdram_we; +wire __main_out_sdram_cas; +wire __main_out_sdram_ras; +wire [1:0] __main_out_sdram_ba; +wire [12:0] __main_out_sdram_a; +`endif + +`ifdef VGA +wire __main_out_vga_hs; +wire __main_out_vga_vs; +wire [5:0] __main_out_vga_r; +wire [5:0] __main_out_vga_g; +wire [5:0] __main_out_vga_b; +`endif + +`ifdef UART +wire __main_out_uart_tx; +`endif +`ifdef UART2 +wire __main_out_uart_tx; +`endif + +`ifdef KEYPAD +wire [3:0] __main_out_kpadC; +`endif + +// reset + +reg [31:0] RST_d; +reg [31:0] RST_q; + +reg ready = 0; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge clk) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 32'b111111111111111111111111111111; + end +end + +wire reset_main; +assign reset_main = RST_q[0]; +wire run_main; +assign run_main = 1'b1; + +M_main __main( + .reset(reset_main), + .in_run(run_main), + .out_leds(__main_out_leds), +`ifdef BUTTONS + .in_btns(btns), +`endif +`ifdef SDRAM + .inout_sdram_dq(SDRAM_DQ), + .out_sdram_clk(__main_out_sdram_clk), + .out_sdram_cle(__main_out_sdram_cle), + .out_sdram_dqm(__main_out_sdram_dqm), + .out_sdram_cs(__main_out_sdram_cs), + .out_sdram_we(__main_out_sdram_we), + .out_sdram_cas(__main_out_sdram_cas), + .out_sdram_ras(__main_out_sdram_ras), + .out_sdram_ba(__main_out_sdram_ba), + .out_sdram_a(__main_out_sdram_a), +`endif +`ifdef VGA + .out_video_hs(__main_out_vga_hs), + .out_video_vs(__main_out_vga_vs), + .out_video_r(__main_out_vga_r), + .out_video_g(__main_out_vga_g), + .out_video_b(__main_out_vga_b), +`endif +`ifdef UART + .out_uart_tx(__main_out_uart_tx), + .in_uart_rx(uart_rx), +`endif +`ifdef UART2 + .out_uart_tx(__main_out_uart_tx), + .in_uart_rx(uart2_rx), +`endif +`ifdef KEYPAD + .out_kpadC(__main_out_kpadC), + .in_kpadR(kpadR), +`endif + .clock(clk) +); + +assign leds = __main_out_leds; + +`ifdef SDRAM +assign SDRAM_CLK = __main_out_sdram_clk; +assign SDRAM_CKE = __main_out_sdram_cle; +assign SDRAM_DQML = __main_out_sdram_dqm[0]; +assign SDRAM_DQMH = __main_out_sdram_dqm[1]; +assign SDRAM_nCS = __main_out_sdram_cs; +assign SDRAM_nWE = __main_out_sdram_we; +assign SDRAM_nCAS = __main_out_sdram_cas; +assign SDRAM_nRAS = __main_out_sdram_ras; +assign SDRAM_BA = __main_out_sdram_ba; +assign SDRAM_A = __main_out_sdram_a; +`endif + +`ifdef VGA +assign vga_hs = __main_out_vga_hs; +assign vga_vs = __main_out_vga_vs; +assign vga_r = __main_out_vga_r; +assign vga_g = __main_out_vga_g; +assign vga_b = __main_out_vga_b; +`endif + +`ifdef UART +assign uart_tx = __main_out_uart_tx; +`endif +`ifdef UART2 +assign uart2_tx = __main_out_uart_tx; +`endif + +`ifdef KEYPAD +assign kpadC = __main_out_kpadC; +`endif + +endmodule +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR:"/c/Program Files (x86)/Graphviz2.38/bin/" +case "$(uname -s)" in +MINGW*) +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins +;; +*) +esac + +cd $BUILD_DIR + +rm build.v + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +yosys -p 'synth_ice40 ; show -width -stretch -colors 4242' build.v + +dot -Tpdf:cairo show.dot -O +`define YOSYS 1 +`default_nettype none +$$HARDWARE = 1 +$$NUM_LEDS = 4 + +module top( + // LED outputs + output [3:0] leds, + input clk +); + + wire [7:0] __main_leds; + + reg reset = 1; + + always @(posedge clk) begin + if (reset) begin + reset <= 0; + end + end + + M_main __main( + .clock (clk), + .reset (reset), + .out_leds (__main_leds), + .in_run (~reset) + ); + + assign leds = __main_leds; + +endmodule +{ + "name": "techgraph", + "variants": [ + { + "name" : "techgraph", + "framework" : "techgraph.v", + "pins" : [ + {"set" : "basic"} + ], + "builders": [ + { + "builder" : "shell", + "command" : "techgraph.sh", + "description": "Custom shell scripts using yosys and nextpnr" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint8", + "io": "output" + } + ] + } +} +`define VERILATOR 1 +`define COLOR_DEPTH 1 + +/*verilator lint_off pinmissing */ +/*verilator lint_off undriven */ + +$$VERILATOR = 1 +$$NUM_LEDS = 0 +$$SIMULATION = 1 +$$color_depth = 1 +$$color_max = 1 + +`timescale 1ns / 1ps +`default_nettype none + +module top( + // NTSC + output reg [`COLOR_DEPTH*3-1:0] rgb, + output hsync, + output vsync, + input clk, + input reset + ); + +wire [`COLOR_DEPTH-1:0] __main_video_r; +wire [`COLOR_DEPTH-1:0] __main_video_g; +wire [`COLOR_DEPTH-1:0] __main_video_b; +wire __main_video_hs; +wire __main_video_vs; + +// main + +wire run_main; +assign run_main = 1'b1; +wire done_main; + +M_main __main( + .clock(clk), + .reset(reset), +`ifdef NTSC + .out_video_r(__main_video_r), + .out_video_g(__main_video_g), + .out_video_b(__main_video_b), + .out_video_hs(__main_video_hs), + .out_video_vs(__main_video_vs), +`endif + .in_run(run_main), + .out_done(done_main) +); + +assign rgb = {__main_video_b[0], __main_video_g[0], __main_video_r[0]}; +assign hsync = __main_video_hs; +assign vsync = __main_video_vs; + +endmodule +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +if hash make 2>/dev/null; then + export MAKE=make +else + export MAKE=mingw32-make +fi + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR + +if [[ -z "${VERILATOR_ROOT}" ]]; then +case "$(uname -s)" in +Linux) +unset VERILATOR_ROOT +;; +*) +export VERILATOR_ROOT=$SILICE_DIR/../tools/fpga-binutils/mingw64/ +;; +esac +echo "VERILATOR_ROOT is set to ${VERILATOR_ROOT}" +else +echo "VERILATOR_ROOT already defined, using its value" +fi + +u=$(echo "$1" | sed s:/:__:g | tr -d ".") + +echo "using directory $u" + +cd $BUILD_DIR + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +if [[ -z "${VGA}" ]] && [[ -z "${SDRAM}" ]]; then +VERILATOR_LIB="verilator_bare" +else +VERILATOR_LIB="verilator_vga" +fi + +#echo "using verilator framework $VERILATOR_LIB" + +#verilator -Wno-PINMISSING -Wno-WIDTH -O3 -cc build.v --top-module top +#cd obj_dir +#$MAKE -f Vtop.mk +#$MAKE -f Vtop.mk $SILICE_DIR/../frameworks/verilator/$VERILATOR_LIB.o verilated.o +#g++ -O3 $SILICE_DIR/../frameworks/verilator/$VERILATOR_LIB.o verilated.o Vtop__ALL.a $SILICE_DIR/../frameworks/verilator/libverilator_silice.a -o ../run_simul +#cd .. + +#./run_simul +{ + "name": "8bitworkshop", + "variants": [ + { + "name" : "configurable", + "framework" : "8bitworkshop.v", + "pins" : [ + {"set" : "ntsc", "define" : "NTSC=1"} + ], + "builders": [ + { + "builder" : "shell", + "command" : "8bitworkshop.sh", + "description": "Simulates with 8bitworkshop" + } + ] + } + ], + "pins": { + "ntsc": [ + { + "name": "hsync", + "type": "uint1", + "io": "output" + }, + { + "name": "vsync", + "type": "uint1", + "io": "output" + }, + { + "name": "rgb", + "type": "uint3", + "io": "output" + } + ], + "paddles": [ + { + "name": "hpaddle", + "type": "uint1", + "io": "input" + }, + { + "name": "vpaddle", + "type": "uint1", + "io": "input" + } + ], + "switches": [ + { + "name": "switches_p1", + "type": "uint8", + "io": "input" + }, + { + "name": "switches_p2", + "type": "uint8", + "io": "input" + } + ], + "keyboard": [ + { + "name": "keycode", + "type": "uint8", + "io": "input" + }, + { + "name": "keystrobe", + "type": "uint1", + "io": "output" + } + ] + } +} +{ + "name": "fomu", + "variants": [ + { + "name" : "hacker", + "framework" : "fomu.v", + "pins" : [ + {"set" : "basic"}, + {"set" : "usb", "define" : "USB=1"}, + {"set" : "spi", "define" : "SPI=1"}, + {"set" : "pads", "define" : "PADS=1"} + ], + "builders": [ + { + "builder" : "shell", + "command" : "fomu.sh", + "description": "Custom shell scripts using yosys and nextpnr" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint3", + "io": "output" + } + ], + "usb": [ + { + "name": "usb_dp", + "type": "uint1", + "io": "output" + }, + { + "name": "usb_dn", + "type": "uint1", + "io": "output" + }, + { + "name": "usb_dp_pu", + "type": "uint1", + "io": "output" + } + ], + "spi": [ + { + "name": "spi_mosi", + "type": "uint1", + "io": "output" + }, + { + "name": "spi_miso", + "type": "uint1", + "io": "input" + }, + { + "name": "spi_clk", + "type": "uint1", + "io": "output" + }, + { + "name": "spi_cs", + "type": "uint1", + "io": "output" + } + ], + "pads": [ + { + "name": "user_pads", + "type": "uint4", + "io": "input" + } + ] + } +} +# Configuration for the Fomu hacker board. +set_io rgb0 A5 # Blue LED +set_io rgb1 B5 # Green LED +set_io rgb2 C5 # Red LED +set_io clki F5 # Clock input from 48MHz Oscillator +set_io spi_mosi F1 # SPI Master Out, Slave In Pin +set_io spi_miso E1 # SPI Master In, Slave Out Pin +set_io spi_clk D1 # SPI Master Clock Output Pin +set_io spi_cs C1 # SPI Chip Select +set_io user_1 F4 # User touch pad 1 +set_io user_2 E5 # User touch pad 2 +set_io user_3 E4 # User touch pad 3 +set_io user_4 F2 # User touch pad 4 +set_io usb_dn A2 # USB D- pad +set_io usb_dp A4 # USB D+ pad +set_io usb_dp_pu D5 # USB D+ pull up (indicates device connected) +// credits: rob-ng15 - see also https://github.com/rob-ng15/Silice-Playground/ +`define FOMU 1 +`default_nettype none +$$FOMU = 1 +$$HARDWARE = 1 +$$NUM_LEDS = 3 + +// Correctly map pins for the iCE40UP5K SB_RGBA_DRV hard macro. +// The variables EVT, PVT and HACKER are set from the yosys commandline e.g. yosys -D HACKER=1 +`ifdef EVT +`define BLUEPWM RGB0PWM +`define REDPWM RGB1PWM +`define GREENPWM RGB2PWM +`elsif HACKER +`define BLUEPWM RGB0PWM +`define GREENPWM RGB1PWM +`define REDPWM RGB2PWM +`elsif PVT +`define GREENPWM RGB0PWM +`define REDPWM RGB1PWM +`define BLUEPWM RGB2PWM +`else +`error_board_not_supported +`endif + +module top( + // LED outputs + output rgb0, + output rgb1, + output rgb2, + // USB Pins + output usb_dp, + output usb_dn, + output usb_dp_pu, +`ifdef SPI + // SPI + output spi_mosi, + input spi_miso, + output spi_clk, + output spi_cs, +`endif +`ifdef PADS + // USER pads + input [3:0] user_pads, +`endif + // 48MHz Clock Input + input clki +); + +`ifdef USB + wire __main_usb_dp; + wire __main_usb_dn; + wire __main_usb_dp_pu; + assign usb_dp = __main_usb_dp; + assign usb_dn = __main_usb_dn; + assign usb_dp_pu = __main_usb_dp_pu; +`else + // Assign USB pins to "0" so as to disconnect Fomu from + // the host system. Otherwise it would try to talk to + // us over USB, which wouldn't work since we have no stack. + assign usb_dp = 1'b0; + assign usb_dn = 1'b0; + assign usb_dp_pu = 1'b0; +`endif + +`ifdef SPI + wire __main_spi_mosi; + wire __main_spi_clk; + wire __main_spi_cs; + assign spi_mosi = __main_spi_mosi; + assign spi_clk = __main_spi_clk; + assign spi_cs = __main_spi_cs; +`endif + + // Connect to system clock (with buffering) + wire clk; + SB_GB clk_gb ( + .USER_SIGNAL_TO_GLOBAL_BUFFER(clki), + .GLOBAL_BUFFER_OUTPUT(clk) + ); + + wire [2:0] __main_leds; + + reg [31:0] RST_d; + reg [31:0] RST_q; + + reg ready = 0; + + always @* begin + RST_d = RST_q >> 1; + end + + always @(posedge clk) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 32'b111111111111111111111111111111; + end + end + + wire reset_main; + assign reset_main = RST_q[0]; + wire run_main; + assign run_main = 1'b1; + + M_main __main( + .clock (clk), + .reset (RST_q[0]), + .out_leds (__main_leds), +`ifdef USB + .out_usb_dp (__main_usb_dp), + .out_usb_dn (__main_usb_dn), + .out_usb_dp_pu(__main_usb_dp_pu), +`endif +`ifdef SPI + .out_spi_mosi (__main_spi_mosi), + .in_spi_miso (spi_miso), + .out_spi_clk (__main_spi_clk), + .out_spi_cs (__main_spi_cs), +`endif +`ifdef PADS + .in_user_pads(user_pads), +`endif + .in_run (run_main) + ); + + SB_RGBA_DRV #( + .CURRENT_MODE("0b1"), // half current + .RGB0_CURRENT("0b000011"), // 4 mA + .RGB1_CURRENT("0b000011"), // 4 mA + .RGB2_CURRENT("0b000011") // 4 mA + ) RGBA_DRIVER ( + .CURREN(1'b1), + .RGBLEDEN(1'b1), + .`BLUEPWM (__main_leds[0]), // Blue + .`REDPWM (__main_leds[1]), // Red + .`GREENPWM(__main_leds[2]), // Green + .RGB0(rgb0), + .RGB1(rgb1), + .RGB2(rgb2) + ); + +endmodule +#!/bin/bash + +# credits: rob-ng15 -- see also https://github.com/rob-ng15/Silice-Playground + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR +case "$(uname -s)" in +MINGW*) +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins +;; +*) +esac + +cd $BUILD_DIR + +rm build* + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +yosys -D HACKER=1 -p 'synth_ice40 -top top -json build.json' build.v + +nextpnr-ice40 --up5k --package uwg30 --opt-timing --pcf $BOARD_DIR/fomu-hacker.pcf --json build.json --asc build.asc + +icepack build.asc build.bit +icetime -d up5k -mtr build.rpt build.asc + +cp build.bit build.dfu +dfu-suffix -v 1209 -p 70b1 -a build.dfu +dfu-util -D build.dfu +`define ULX3S 1 +`default_nettype none +$$ULX3S = 1 +$$HARDWARE = 1 +$$NUM_LEDS = 8 +$$NUM_BTNS = 7 +$$color_depth = 6 +$$color_max = 63 +$$config['dualport_bram_supported'] = 'no' + +module top( + // basic + output [7:0] leds, + // buttons + input [6:0] btns, +`ifdef SDRAM + // sdram + output sdram_clk, + output sdram_cke, + output [1:0] sdram_dqm, + output sdram_csn, + output sdram_wen, + output sdram_casn, + output sdram_rasn, + output [1:0] sdram_ba, + output [12:0] sdram_a, + inout [15:0] sdram_d, +`endif +`ifdef AUDIO + output [3:0] audio_l, + output [3:0] audio_r, +`endif +`ifdef OLED + // oled + output oled_clk, + output oled_mosi, + output oled_dc, + output oled_resn, + output oled_csn, +`endif +`ifdef SDCARD + // sdcard + output sd_clk, + output sd_csn, + output sd_mosi, + input sd_miso, +`endif +`ifdef GPIO + // gpio + output [27:0] gp, + input [27:0] gn, +`endif +`ifdef VGA + // vga + output [27:0] gp, + input [27:0] gn, +`endif +`ifdef HDMI + // hdmi + output [3:0] gpdi_dp, // {clock,R,G,B} + output [3:0] gpdi_dn, +`endif +`ifdef UART + // uart + output ftdi_rxd, + input ftdi_txd, +`endif +`ifdef UART2 + // uart2 +`endif + input clk_25mhz + ); + +wire [7:0] __main_out_leds; + +`ifdef OLED +wire __main_oled_clk; +wire __main_oled_mosi; +wire __main_oled_dc; +wire __main_oled_resn; +wire __main_oled_csn; +`endif + +`ifdef SDRAM +wire __main_out_sdram_clk; +wire __main_out_sdram_cle; +wire [1:0] __main_out_sdram_dqm; +wire __main_out_sdram_cs; +wire __main_out_sdram_we; +wire __main_out_sdram_cas; +wire __main_out_sdram_ras; +wire [1:0] __main_out_sdram_ba; +wire [12:0] __main_out_sdram_a; +`endif + +`ifdef UART2 +`ifndef GPIO +`error_UART2_needs_GPIO +`endif +`endif + +`ifdef UART +wire __main_out_uart_tx; +`endif + +`ifdef VGA +wire __main_out_vga_hs; +wire __main_out_vga_vs; +wire [5:0] __main_out_vga_r; +wire [5:0] __main_out_vga_g; +wire [5:0] __main_out_vga_b; +`endif + +`ifdef SDCARD +wire __main_sd_clk; +wire __main_sd_csn; +wire __main_sd_mosi; +`endif + +`ifdef HDMI +wire [3:0] __main_out_gpdi_dp; +wire [3:0] __main_out_gpdi_dn; +`endif + +`ifdef AUDIO +wire [3:0] __main_out_audio_l; +wire [3:0] __main_out_audio_r; +`endif + +wire ready = btns[0]; + +reg [31:0] RST_d; +reg [31:0] RST_q; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge clk_25mhz) begin + if (ready) begin + RST_q <= RST_d; + end else begin + RST_q <= 32'b111111111111111111111111111111; + end +end + +wire run_main; +assign run_main = 1'b1; + +M_main __main( + .reset (RST_q[0]), + .in_run (run_main), + .out_leds (__main_out_leds), +`ifdef BUTTONS + .in_btns (btns), +`endif +`ifdef SDRAM + .inout_sdram_dq(sdram_d), + .out_sdram_clk (__main_out_sdram_clk), + .out_sdram_cle (__main_out_sdram_cle), + .out_sdram_dqm (__main_out_sdram_dqm), + .out_sdram_cs (__main_out_sdram_cs), + .out_sdram_we (__main_out_sdram_we), + .out_sdram_cas (__main_out_sdram_cas), + .out_sdram_ras (__main_out_sdram_ras), + .out_sdram_ba (__main_out_sdram_ba), + .out_sdram_a (__main_out_sdram_a), +`endif +`ifdef SDCARD + .out_sd_csn (__main_sd_csn), + .out_sd_clk (__main_sd_clk), + .out_sd_mosi (__main_sd_mosi), + .in_sd_miso (sd_miso), +`endif +`ifdef AUDIO + .out_audio_l (__main_out_audio_l), + .out_audio_r (__main_out_audio_r), +`endif +`ifdef OLED + .out_oled_clk (__main_oled_clk), + .out_oled_mosi(__main_oled_mosi), + .out_oled_dc (__main_oled_dc), + .out_oled_resn(__main_oled_resn), + .out_oled_csn (__main_oled_csn), +`endif +`ifdef GPIO +`ifdef UART2 + .out_gp (gp[27:1]), + .in_gn (gn[27:1]), + .out_uart2_tx (gp[0]), + .in_uart2_rx (gn[0]), +`else + .out_gp (gp), + .in_gn (gn), +`endif +`endif +`ifdef UART + .out_uart_tx (__main_out_uart_tx), + .in_uart_rx (ftdi_txd), +`endif +`ifdef VGA + .out_video_hs (__main_out_vga_hs), + .out_video_vs (__main_out_vga_vs), + .out_video_r (__main_out_vga_r), + .out_video_g (__main_out_vga_g), + .out_video_b (__main_out_vga_b), +`endif +`ifdef HDMI + .out_gpdi_dp (__main_out_gpdi_dp), + .out_gpdi_dn (__main_out_gpdi_dn), +`endif + .clock (clk_25mhz) +); + +assign leds = __main_out_leds; + +`ifdef SDRAM +assign sdram_clk = __main_out_sdram_clk; +assign sdram_cke = __main_out_sdram_cle; +assign sdram_dqm = __main_out_sdram_dqm; +assign sdram_csn = __main_out_sdram_cs; +assign sdram_wen = __main_out_sdram_we; +assign sdram_casn = __main_out_sdram_cas; +assign sdram_rasn = __main_out_sdram_ras; +assign sdram_ba = __main_out_sdram_ba; +assign sdram_a = __main_out_sdram_a; +`endif + +`ifdef AUDIO +assign audio_l = __main_out_audio_l; +assign audio_r = __main_out_audio_r; +`endif + +`ifdef VGA +assign gp[0] = __main_out_vga_vs; +assign gp[1] = __main_out_vga_hs; +assign gp[2] = __main_out_vga_r[5]; +assign gp[3] = __main_out_vga_r[4]; +assign gp[4] = __main_out_vga_r[3]; +assign gp[5] = __main_out_vga_r[2]; +assign gp[6] = __main_out_vga_r[1]; +assign gp[7] = __main_out_vga_r[0]; +assign gp[8] = __main_out_vga_g[5]; +assign gp[9] = __main_out_vga_g[4]; +assign gp[10] = __main_out_vga_g[3]; +assign gp[11] = __main_out_vga_g[2]; +assign gp[12] = __main_out_vga_g[1]; +assign gp[13] = __main_out_vga_g[0]; +assign gp[14] = __main_out_vga_b[0]; +assign gp[15] = __main_out_vga_b[1]; +assign gp[16] = __main_out_vga_b[2]; +assign gp[17] = __main_out_vga_b[3]; +assign gp[18] = __main_out_vga_b[4]; +assign gp[19] = __main_out_vga_b[5]; +`endif + +`ifdef SDCARD +assign sd_clk = __main_sd_clk; +assign sd_csn = __main_sd_csn; +assign sd_mosi = __main_sd_mosi; +`endif + +`ifdef OLED +assign oled_clk = __main_oled_clk; +assign oled_mosi = __main_oled_mosi; +assign oled_dc = __main_oled_dc; +assign oled_resn = __main_oled_resn; +assign oled_csn = __main_oled_csn; +`endif + +`ifdef UART +assign ftdi_rxd = __main_out_uart_tx; +`endif + +`ifdef HDMI +assign gpdi_dp = __main_out_gpdi_dp; +assign gpdi_dn = __main_out_gpdi_dn; +`endif + +endmodule +# https://github.com/emard/ulx3s/blob/master/doc/constraints/ulx3s_v20.lpf + +BLOCK RESETPATHS; +BLOCK ASYNCPATHS; +## ULX3S v2.x.x and v3.0.x + +# The clock "usb" and "gpdi" sheet +LOCATE COMP "clk_25mhz" SITE "G2"; +IOBUF PORT "clk_25mhz" PULLMODE=NONE IO_TYPE=LVCMOS33; +FREQUENCY PORT "clk_25mhz" 25 MHZ; + +# JTAG and SPI FLASH voltage 3.3V and options to boot from SPI flash +# write to FLASH possible any time from JTAG: +#SYSCONFIG CONFIG_IOVOLTAGE=3.3 COMPRESS_CONFIG=ON MCCLK_FREQ=62 MASTER_SPI_PORT=ENABLE SLAVE_SPI_PORT=DISABLE SLAVE_PARALLEL_PORT=DISABLE; +# write to FLASH possible from user bitstream: +SYSCONFIG CONFIG_IOVOLTAGE=3.3 COMPRESS_CONFIG=ON MCCLK_FREQ=62 MASTER_SPI_PORT=DISABLE SLAVE_SPI_PORT=DISABLE SLAVE_PARALLEL_PORT=DISABLE; + +## USBSERIAL FTDI-FPGA serial port "usb" sheet +LOCATE COMP "ftdi_rxd" SITE "L4"; # FPGA transmits to ftdi +LOCATE COMP "ftdi_txd" SITE "M1"; # FPGA receives from ftdi +LOCATE COMP "ftdi_nrts" SITE "M3"; # FPGA receives +LOCATE COMP "ftdi_ndtr" SITE "N1"; # FPGA receives +LOCATE COMP "ftdi_txden" SITE "L3"; # FPGA receives +IOBUF PORT "ftdi_rxd" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "ftdi_txd" PULLMODE=UP IO_TYPE=LVCMOS33; +IOBUF PORT "ftdi_nrts" PULLMODE=UP IO_TYPE=LVCMOS33; +IOBUF PORT "ftdi_ndtr" PULLMODE=UP IO_TYPE=LVCMOS33; +IOBUF PORT "ftdi_txden" PULLMODE=UP IO_TYPE=LVCMOS33; + +## LED indicators "blinkey" and "gpio" sheet +LOCATE COMP "leds[7]" SITE "H3"; +LOCATE COMP "leds[6]" SITE "E1"; +LOCATE COMP "leds[5]" SITE "E2"; +LOCATE COMP "leds[4]" SITE "D1"; +LOCATE COMP "leds[3]" SITE "D2"; +LOCATE COMP "leds[2]" SITE "C1"; +LOCATE COMP "leds[1]" SITE "C2"; +LOCATE COMP "leds[0]" SITE "B2"; +IOBUF PORT "leds[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "leds[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "leds[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "leds[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "leds[4]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "leds[5]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "leds[6]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "leds[7]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; + +## Pushbuttons "blinkey", "flash", "power", "gpdi" sheet +LOCATE COMP "btns[0]" SITE "D6"; # BTN_PWRn (inverted logic) +LOCATE COMP "btns[1]" SITE "R1"; # FIRE1 +LOCATE COMP "btns[2]" SITE "T1"; # FIRE2 +LOCATE COMP "btns[3]" SITE "R18"; # UP +LOCATE COMP "btns[4]" SITE "V1"; # DOWN +LOCATE COMP "btns[5]" SITE "U1"; # LEFT +LOCATE COMP "btns[6]" SITE "H16"; # RIGHT +IOBUF PORT "btns[0]" PULLMODE=UP IO_TYPE=LVCMOS33; +IOBUF PORT "btns[1]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "btns[2]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "btns[3]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "btns[4]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "btns[5]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "btns[6]" PULLMODE=DOWN IO_TYPE=LVCMOS33; + +## DIP switch "blinkey", "gpio" sheet +LOCATE COMP "sw[0]" SITE "E8"; # SW1 +LOCATE COMP "sw[1]" SITE "D8"; # SW2 +LOCATE COMP "sw[2]" SITE "D7"; # SW3 +LOCATE COMP "sw[3]" SITE "E7"; # SW4 +IOBUF PORT "sw[0]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "sw[1]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "sw[2]" PULLMODE=DOWN IO_TYPE=LVCMOS33; +IOBUF PORT "sw[3]" PULLMODE=DOWN IO_TYPE=LVCMOS33; + +## SPI OLED DISPLAY SSD1331 (Color) or SSD1306 (B/W) "blinkey", "usb" sheet +LOCATE COMP "oled_clk" SITE "P4"; +LOCATE COMP "oled_mosi" SITE "P3"; +LOCATE COMP "oled_dc" SITE "P1"; +LOCATE COMP "oled_resn" SITE "P2"; +LOCATE COMP "oled_csn" SITE "N2"; +IOBUF PORT "oled_clk" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "oled_mosi" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "oled_dc" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "oled_resn" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "oled_csn" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; + +## SPI Flash chip "flash" sheet +LOCATE COMP "flash_csn" SITE "R2"; +#LOCATE COMP "flash_clk" SITE "U3"; +LOCATE COMP "flash_mosi" SITE "W2"; +LOCATE COMP "flash_miso" SITE "V2"; +LOCATE COMP "flash_holdn" SITE "W1"; +LOCATE COMP "flash_wpn" SITE "Y2"; +#LOCATE COMP "flash_csspin" SITE "AJ3"; +#LOCATE COMP "flash_initn" SITE "AG4"; +#LOCATE COMP "flash_done" SITE "AJ4"; +#LOCATE COMP "flash_programn" SITE "AH4"; +#LOCATE COMP "flash_cfg_select[0]" SITE "AM4"; +#LOCATE COMP "flash_cfg_select[1]" SITE "AL4"; +#LOCATE COMP "flash_cfg_select[2]" SITE "AK4"; +IOBUF PORT "flash_csn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_clk" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "flash_mosi" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "flash_miso" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "flash_holdn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "flash_wpn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_csspin" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_initn" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_done" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_programn" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_cfg_select[0]" PULLMODE=DOWN IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_cfg_select[1]" PULLMODE=DOWN IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "flash_cfg_select[2]" PULLMODE=DOWN IO_TYPE=LVCMOS33 DRIVE=4; + +## SD card "sdcard", "usb" sheet +LOCATE COMP "sd_clk" SITE "H2"; # sd_clk WiFi_GPIO14 +LOCATE COMP "sd_mosi" SITE "J1"; # sd_cmd_di (MOSI) WiFi GPIO15 +LOCATE COMP "sd_miso" SITE "J3"; # sd_dat0_do (MISO) WiFi GPIO2 +LOCATE COMP "sd_csn" SITE "K2"; # sd_dat3_csn WiFi_GPIO13 +IOBUF PORT "sd_clk" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sd_mosi" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sd_miso" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sd_csn" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; + +## ADC SPI (MAX11123) "analog", "ram" sheet +LOCATE COMP "adc_csn" SITE "R17"; +LOCATE COMP "adc_mosi" SITE "R16"; +LOCATE COMP "adc_miso" SITE "U16"; +LOCATE COMP "adc_sclk" SITE "P17"; +IOBUF PORT "adc_csn" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "adc_mosi" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "adc_miso" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "adc_sclk" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; + +## Audio 4-bit DAC "analog", "gpio" sheet +# Output impedance 75 ohm. +# Strong enough to drive 16 ohm earphones. +LOCATE COMP "audio_l[3]" SITE "B3"; # JACK TIP (left audio) +LOCATE COMP "audio_l[2]" SITE "C3"; +LOCATE COMP "audio_l[1]" SITE "D3"; +LOCATE COMP "audio_l[0]" SITE "E4"; +LOCATE COMP "audio_r[3]" SITE "C5"; # JACK RING1 (right audio) +LOCATE COMP "audio_r[2]" SITE "D5"; +LOCATE COMP "audio_r[1]" SITE "B5"; +LOCATE COMP "audio_r[0]" SITE "A3"; +LOCATE COMP "audio_v[3]" SITE "E5"; # JACK RING2 (video or digital audio) +LOCATE COMP "audio_v[2]" SITE "F5"; +LOCATE COMP "audio_v[1]" SITE "F2"; +LOCATE COMP "audio_v[0]" SITE "H5"; +IOBUF PORT "audio_l[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_l[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_l[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_l[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_r[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_r[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_r[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_r[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_v[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_v[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_v[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "audio_v[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; + +## WiFi ESP-32 "wifi", "usb", "flash" sheet +# other pins are shared with GP/GN, SD card and JTAG +LOCATE COMP "wifi_en" SITE "F1"; # enable/reset WiFi +LOCATE COMP "wifi_rxd" SITE "K3"; # FPGA transmits to WiFi +LOCATE COMP "wifi_txd" SITE "K4"; # FPGA receives from WiFi +LOCATE COMP "wifi_gpio0" SITE "L2"; +LOCATE COMP "wifi_gpio5" SITE "N4"; # WIFI LED +LOCATE COMP "wifi_gpio16" SITE "L1"; # Serial1 RX +LOCATE COMP "wifi_gpio17" SITE "N3"; # Serial1 TX +# LOCATE COMP "prog_done" SITE "Y3"; # not GPIO, always active +IOBUF PORT "wifi_en" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "wifi_rxd" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "wifi_txd" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "wifi_gpio0" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "wifi_gpio5" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "wifi_gpio16" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "wifi_gpio17" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +# IOBUF PORT "prog_done" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; + +## PCB antenna 433 MHz (may be also used for FM) "usb" sheet +LOCATE COMP "ant_433mhz" SITE "G1"; +IOBUF PORT "ant_433mhz" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; + +## Second USB port "US2" going directly into FPGA "usb", "ram" sheet +LOCATE COMP "usb_fpga_dp" SITE "E16"; # single ended or differential input only +LOCATE COMP "usb_fpga_dn" SITE "F16"; +IOBUF PORT "usb_fpga_dp" PULLMODE=NONE IO_TYPE=LVCMOS33D DRIVE=16; +IOBUF PORT "usb_fpga_dn" PULLMODE=NONE IO_TYPE=LVCMOS33D DRIVE=16; +LOCATE COMP "usb_fpga_bd_dp" SITE "D15"; # single-ended bidirectional +LOCATE COMP "usb_fpga_bd_dn" SITE "E15"; +IOBUF PORT "usb_fpga_bd_dp" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "usb_fpga_bd_dn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +LOCATE COMP "usb_fpga_pu_dp" SITE "B12"; # pull up/down control +LOCATE COMP "usb_fpga_pu_dn" SITE "C12"; +IOBUF PORT "usb_fpga_pu_dp" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; +IOBUF PORT "usb_fpga_pu_dn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=16; + +## JTAG ESP-32 "usb" sheet +# connected to FT231X and ESP-32 +# commented out because those are dedicated pins, not directly useable as GPIO +# but could be used by some vendor-specific JTAG bridging (boundary scan) module +#LOCATE COMP "jtag_tdi" SITE "R5"; # FTDI_nRI FPGA receives +#LOCATE COMP "jtag_tdo" SITE "V4"; # FTDI_nCTS FPGA transmits +#LOCATE COMP "jtag_tck" SITE "T5"; # FTDI_nDSR FPGA receives +#LOCATE COMP "jtag_tms" SITE "U5"; # FTDI_nDCD FPGA receives +#IOBUF PORT "jtag_tdi" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "jtag_tdo" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "jtag_tck" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +#IOBUF PORT "jtag_tms" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; + +## SDRAM "ram" sheet +LOCATE COMP "sdram_clk" SITE "F19"; +LOCATE COMP "sdram_cke" SITE "F20"; +LOCATE COMP "sdram_csn" SITE "P20"; +LOCATE COMP "sdram_wen" SITE "T20"; +LOCATE COMP "sdram_rasn" SITE "R20"; +LOCATE COMP "sdram_casn" SITE "T19"; +LOCATE COMP "sdram_a[0]" SITE "M20"; +LOCATE COMP "sdram_a[1]" SITE "M19"; +LOCATE COMP "sdram_a[2]" SITE "L20"; +LOCATE COMP "sdram_a[3]" SITE "L19"; +LOCATE COMP "sdram_a[4]" SITE "K20"; +LOCATE COMP "sdram_a[5]" SITE "K19"; +LOCATE COMP "sdram_a[6]" SITE "K18"; +LOCATE COMP "sdram_a[7]" SITE "J20"; +LOCATE COMP "sdram_a[8]" SITE "J19"; +LOCATE COMP "sdram_a[9]" SITE "H20"; +LOCATE COMP "sdram_a[10]" SITE "N19"; +LOCATE COMP "sdram_a[11]" SITE "G20"; +LOCATE COMP "sdram_a[12]" SITE "G19"; +LOCATE COMP "sdram_ba[0]" SITE "P19"; +LOCATE COMP "sdram_ba[1]" SITE "N20"; +LOCATE COMP "sdram_dqm[0]" SITE "U19"; +LOCATE COMP "sdram_dqm[1]" SITE "E20"; +LOCATE COMP "sdram_d[0]" SITE "J16"; +LOCATE COMP "sdram_d[1]" SITE "L18"; +LOCATE COMP "sdram_d[2]" SITE "M18"; +LOCATE COMP "sdram_d[3]" SITE "N18"; +LOCATE COMP "sdram_d[4]" SITE "P18"; +LOCATE COMP "sdram_d[5]" SITE "T18"; +LOCATE COMP "sdram_d[6]" SITE "T17"; +LOCATE COMP "sdram_d[7]" SITE "U20"; +LOCATE COMP "sdram_d[8]" SITE "E19"; +LOCATE COMP "sdram_d[9]" SITE "D20"; +LOCATE COMP "sdram_d[10]" SITE "D19"; +LOCATE COMP "sdram_d[11]" SITE "C20"; +LOCATE COMP "sdram_d[12]" SITE "E18"; +LOCATE COMP "sdram_d[13]" SITE "F18"; +LOCATE COMP "sdram_d[14]" SITE "J18"; +LOCATE COMP "sdram_d[15]" SITE "J17"; +IOBUF PORT "sdram_clk" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_cke" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_csn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_wen" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_rasn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_casn" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[4]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[5]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[6]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[7]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[8]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[9]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[10]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[11]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_a[12]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_ba[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_ba[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_dqm[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_dqm[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[4]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[5]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[6]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[7]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[8]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[9]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[10]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[11]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[12]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[13]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[14]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "sdram_d[15]" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4; + +# GPDI differential interface (Video) "gpdi" sheet +LOCATE COMP "gpdi_dp[0]" SITE "A16"; # Blue + +LOCATE COMP "gpdi_dn[0]" SITE "B16"; # Blue - +LOCATE COMP "gpdi_dp[1]" SITE "A14"; # Green + +LOCATE COMP "gpdi_dn[1]" SITE "C14"; # Green - +LOCATE COMP "gpdi_dp[2]" SITE "A12"; # Red + +LOCATE COMP "gpdi_dn[2]" SITE "A13"; # Red - +LOCATE COMP "gpdi_dp[3]" SITE "A17"; # Clock + +LOCATE COMP "gpdi_dn[3]" SITE "B18"; # Clock - +LOCATE COMP "gpdi_ethp" SITE "A19"; # Ethernet + +LOCATE COMP "gpdi_ethn" SITE "B20"; # Ethernet - +LOCATE COMP "gpdi_cec" SITE "A18"; +LOCATE COMP "gpdi_sda" SITE "B19"; # I2C shared with RTC +LOCATE COMP "gpdi_scl" SITE "E12"; # I2C shared with RTC C12->E12 +IOBUF PORT "gpdi_dp[0]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_dn[0]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_dp[1]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_dn[1]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_dp[2]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_dn[2]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_dp[3]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_dn[3]" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_ethp" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_ethn" IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_cec" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_sda" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +IOBUF PORT "gpdi_scl" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; + +# GPIO (default single-ended) "gpio", "ram", "gpdi" sheet +# Physical connector pins: +# *** when FEMALE ANGLED (90 deg PMOD) soldered *** +# Jm_n- = Jm_n, Jm_n+ = Jm_n+1 +# example: J1_5- is J1_5 phsyical, J1_5+ is J1_6 physical +# *** when MALE VERTICAL soldered *** +# Jm_n+ = Jm_n, Jm_n- = Jm_n+1 +# example: J1_5+ is J1_5 physical, J1_5- is J1_6 physical +# Pins enumerated gp[0-27], gn[0-27]. +# With differential mode enabled on Lattice, +# gp[] (+) are used, gn[] (-) are ignored from design +# as they handle inverted signal by default. +# To enable differential, rename LVCMOS33->LVCMOS33D +# To enable clock i/o, add this (example): +#FREQUENCY PORT "gp[12]" 25.00 MHZ; +LOCATE COMP "gp[0]" SITE "B11"; # J1_5+ GP0 PCLK +LOCATE COMP "gn[0]" SITE "C11"; # J1_5- GN0 PCLK +LOCATE COMP "gp[1]" SITE "A10"; # J1_7+ GP1 PCLK +LOCATE COMP "gn[1]" SITE "A11"; # J1_7- GN1 PCLK +LOCATE COMP "gp[2]" SITE "A9"; # J1_9+ GP2 GR_PCLK +LOCATE COMP "gn[2]" SITE "B10"; # J1_9- GN2 GR_PCLK +LOCATE COMP "gp[3]" SITE "B9"; # J1_11+ GP3 +LOCATE COMP "gn[3]" SITE "C10"; # J1_11- GN3 +LOCATE COMP "gp[4]" SITE "A7"; # J1_13+ GP4 +LOCATE COMP "gn[4]" SITE "A8"; # J1_13- GN4 +LOCATE COMP "gp[5]" SITE "C8"; # J1_15+ GP5 +LOCATE COMP "gn[5]" SITE "B8"; # J1_15- GN5 +LOCATE COMP "gp[6]" SITE "C6"; # J1_17+ GP6 +LOCATE COMP "gn[6]" SITE "C7"; # J1_17- GN6 +IOBUF PORT "gp[0]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[0]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[1]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[1]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[2]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[2]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[3]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[3]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[4]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[4]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[5]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[5]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[6]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[6]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +LOCATE COMP "gp[7]" SITE "A6"; # J1_23+ GP7 +LOCATE COMP "gn[7]" SITE "B6"; # J1_23- GN7 +LOCATE COMP "gp[8]" SITE "A4"; # J1_25+ GP8 +LOCATE COMP "gn[8]" SITE "A5"; # J1_25- GN8 DIFF +LOCATE COMP "gp[9]" SITE "A2"; # J1_27+ GP9 DIFF +LOCATE COMP "gn[9]" SITE "B1"; # J1_27- GN9 DIFF +LOCATE COMP "gp[10]" SITE "C4"; # J1_29+ GP10 DIFF +LOCATE COMP "gn[10]" SITE "B4"; # J1_29- GN10 DIFF +LOCATE COMP "gp[11]" SITE "F4"; # J1_31+ GP11 DIFF WIFI_GPIO26 +LOCATE COMP "gn[11]" SITE "E3"; # J1_31- GN11 DIFF WIFI_GPIO25 +LOCATE COMP "gp[12]" SITE "G3"; # J1_33+ GP12 DIFF WIFI_GPIO33 PCLK +LOCATE COMP "gn[12]" SITE "F3"; # J1_33- GN12 DIFF WIFI_GPIO32 PCLK +LOCATE COMP "gp[13]" SITE "H4"; # J1_35+ GP13 DIFF WIFI_GPIO35 +LOCATE COMP "gn[13]" SITE "G5"; # J1_35- GN13 DIFF WIFI_GPIO34 +IOBUF PORT "gp[7]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[7]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[8]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[8]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[9]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[9]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[10]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[10]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[11]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[11]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[12]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[12]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[13]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[13]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +LOCATE COMP "gp[14]" SITE "U18"; # J2_5+ GP14 DIFF ADC1 +LOCATE COMP "gn[14]" SITE "U17"; # J2_5- GN14 DIFF ADC0 +LOCATE COMP "gp[15]" SITE "N17"; # J2_7+ GP15 DIFF ADC3 +LOCATE COMP "gn[15]" SITE "P16"; # J2_7- GN15 DIFF ADC2 +LOCATE COMP "gp[16]" SITE "N16"; # J2_9+ GP16 DIFF ADC5 +LOCATE COMP "gn[16]" SITE "M17"; # J2_9- GN16 DIFF ADC4 +LOCATE COMP "gp[17]" SITE "L16"; # J2_11+ GP17 DIFF ADC7 GR_PCLK +LOCATE COMP "gn[17]" SITE "L17"; # J2_11- GN17 DIFF ADC6 +LOCATE COMP "gp[18]" SITE "H18"; # J2_13+ GP18 DIFF +LOCATE COMP "gn[18]" SITE "H17"; # J2_13- GN18 DIFF +LOCATE COMP "gp[19]" SITE "F17"; # J2_15+ GP19 DIFF +LOCATE COMP "gn[19]" SITE "G18"; # J2_15- GN19 DIFF +LOCATE COMP "gp[20]" SITE "D18"; # J2_17+ GP20 DIFF +LOCATE COMP "gn[20]" SITE "E17"; # J2_17- GN20 DIFF +IOBUF PORT "gp[14]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[14]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[15]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[15]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[16]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[16]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[17]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[17]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[18]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[18]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[19]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[19]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[20]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[20]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +LOCATE COMP "gp[21]" SITE "C18"; # J2_23+ GP21 DIFF +LOCATE COMP "gn[21]" SITE "D17"; # J2_23- GN21 DIFF +LOCATE COMP "gp[22]" SITE "B15"; # J2_25+ GP22 +LOCATE COMP "gn[22]" SITE "C15"; # J2_25- GN22 +LOCATE COMP "gp[23]" SITE "B17"; # J2_27+ GP23 +LOCATE COMP "gn[23]" SITE "C17"; # J2_27- GN23 +LOCATE COMP "gp[24]" SITE "C16"; # J2_29+ GP24 +LOCATE COMP "gn[24]" SITE "D16"; # J2_29- GN24 +LOCATE COMP "gp[25]" SITE "D14"; # J2_31+ GP25 +LOCATE COMP "gn[25]" SITE "E14"; # J2_31- GN25 +LOCATE COMP "gp[26]" SITE "B13"; # J2_33+ GP26 +LOCATE COMP "gn[26]" SITE "C13"; # J2_33- GN26 +LOCATE COMP "gp[27]" SITE "D13"; # J2_35+ GP27 +LOCATE COMP "gn[27]" SITE "E13"; # J2_35- GN27 +IOBUF PORT "gp[21]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[21]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[22]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[22]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[23]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[23]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[24]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[24]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[25]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[25]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[26]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[26]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gp[27]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; +IOBUF PORT "gn[27]" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=8; + +## PROGRAMN (reload bitstream from FLASH, exit from bootloader) +# PCB v2.0.5 and higher +LOCATE COMP "user_programn" SITE "M4"; +IOBUF PORT "user_programn" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; + +## SHUTDOWN "power", "ram" sheet (connected from PCB v1.7.5) +# on PCB v1.7 shutdown is not connected to FPGA +LOCATE COMP "shutdown" SITE "G16"; # FPGA receives +IOBUF PORT "shutdown" PULLMODE=DOWN IO_TYPE=LVCMOS33 DRIVE=4; +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR +case "$(uname -s)" in +MINGW*) +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins +;; +*) +esac + +cd $BUILD_DIR + +rm build* +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +# exit ################### DEBUG DEBUG DEBUG + +yosys -p 'scratchpad -copy abc9.script.flow3 abc9.script; synth_ecp5 -abc9 -json build.json' build.v + +nextpnr-ecp5 --85k --package CABGA381 --freq 25 --json build.json --textcfg build.config --lpf $BOARD_DIR/ulx3s.lpf --timing-allow-fail + +sed -i '/.sysconfig/d' build.config + +ecppack --compress --svf-rowsize 100000 --svf build.svf build.config build.bit + +fujprog build.bit +{ + "name": "ulx3s", + "variants": [ + { + "name": "85k", + "framework" : "ulx3s.v", + "pins": [ + {"set" : "basic"}, + {"set" : "buttons","define" : "BUTTONS=1"}, + {"set" : "vga", "define" : "VGA=1"}, + {"set" : "oled", "define" : "OLED=1"}, + {"set" : "sdram", "define" : "SDRAM=1"}, + {"set" : "sdcard", "define" : "SDCARD=1"}, + {"set" : "hdmi", "define" : "HDMI=1"}, + {"set" : "gpio", "define" : "GPIO=1"}, + {"set" : "audio", "define" : "AUDIO=1"}, + {"set" : "uart", "define" : "UART=1"}, + {"set" : "uart2", "define" : "UART2=1"} + ], + "builders": [ + { + "builder" : "edalize", + "description": "Build using Edalize", + "tool": "trellis", + "tool_options": [ + { + "yosys_synth_options": ["-abc9"], + "nextpnr_options": ["--85k", "--freq 25", "--package CABGA381", "--timing-allow-fail"], + "pnr": "next" + } + ], + "bitstream" : "build.bit", + "constraints": [{"name": "ulx3s.lpf", "file_type": "LPF"}], + "program": [{"cmd" : "fujprog", "args" : "build.bit"}] + }, + { + "builder" : "shell", + "command" : "ulx3s.sh", + "description": "Custom shell scripts using yosys and nextpnr" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint8", + "io": "output" + } + ], + "buttons" : [ + { + "name": "btns", + "type": "uint7", + "io": "input" + } + ], + "audio" : [ + { + "name": "audio_l", + "type": "uint4", + "io": "output" + }, + { + "name": "audio_r", + "type": "uint4", + "io": "output" + } + ], + "oled": [ + { + "name": "oled_clk", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_mosi", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_dc", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_resn", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_csn", + "type": "uint1", + "io": "output" + } + ], + "sdcard": [ + { + "name": "sd_csn", + "type": "uint1", + "io": "output" + }, + { + "name": "sd_clk", + "type": "uint1", + "io": "output" + }, + { + "name": "sd_mosi", + "type": "uint1", + "io": "output" + }, + { + "name": "sd_miso", + "type": "uint1", + "io": "input" + } + ], + "sdram": [ + { + "name": "sdram_dq", + "type": "uint16", + "io": "inout" + }, + { + "name": "sdram_clk", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_cle", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_dqm", + "type": "uint2", + "io": "output" + }, + { + "name": "sdram_cs", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_we", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_cas", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_ras", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_ba", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_a", + "type": "uint1", + "io": "output" + } + ], + "hdmi": [ + { + "name": "gpdi_dq", + "type": "uint1", + "io": "output" + }, + { + "name": "gpdi_dn", + "type": "uint1", + "io": "output" + } + ], + "gpio": [ + { + "name": "gp", + "type": "uint28", + "io": "inout" + }, + { + "name": "gn", + "type": "uint28", + "io": "inout" + } + ], + "uart": [ + { + "name": "uart_tx", + "type": "uint1", + "io" : "output" + }, + { + "name": "uart_rx", + "type": "uint1", + "io" : "input" + } + ], + "uart2": [ + { + "name": "uart2_tx", + "type": "uint1", + "io" : "output" + }, + { + "name": "uart2_rx", + "type": "uint1", + "io" : "input" + } + ], + "vga": [ + { + "name": "vga_hs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_vs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_r", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_g", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_b", + "type": "uint6", + "io": "output" + } + ] + } +} +`define ICESTICK 1 +`default_nettype none +$$ICESTICK=1 +$$HARDWARE=1 +$$NUM_LEDS=5 +$$VGA=1 +$$color_depth=6 +$$color_max =63 +$$config['bram_wenable_width'] = 'data' +$$config['dualport_bram_wenable0_width'] = 'data' +$$config['dualport_bram_wenable1_width'] = 'data' +$$config['simple_dualport_bram_wenable0_width'] = 'data' +$$config['simple_dualport_bram_wenable1_width'] = 'data' + +module top( + output D1, + output D2, + output D3, + output D4, + output D5, +`ifdef OLED + output BR3, + output BR4, + output BR5, + output BR6, + output BR7, +`endif +`ifdef VGA + output PMOD1, // r0 + output PMOD2, // r1 + output PMOD3, // r2 + output PMOD4, // r3 + output PMOD8, // r4 + output PMOD9, // r5 + + output TR10, // g0 + output TR9, // g1 + output TR8, // g2 + output TR7, // g3 + output TR6, // g4 + output TR5, // g5 + + output BR10, // b0 + output BR9, // b1 + output BR8, // b2 + output BR7, // b3 + output BR6, // b4 + output BR5, // b5 + + output PMOD7, // hs + output PMOD10, // vs +`endif + input CLK + ); + +wire [4:0] __main_leds; + +`ifdef OLED +wire __main_oled_clk; +wire __main_oled_mosi; +wire __main_oled_csn; +wire __main_oled_resn; +wire __main_oled_dc; +`endif + +`ifdef VGA +wire __main_out_vga_hs; +wire __main_out_vga_vs; +wire __main_out_vga_v0; +wire [5:0] __main_out_vga_r; +wire [5:0] __main_out_vga_g; +wire [5:0] __main_out_vga_b; +`endif + +// the init sequence pauses for some cycles +// waiting for BRAM init to stabalize +// this is a known issue with ice40 FPGAs +// https://github.com/YosysHQ/icestorm/issues/76 + +reg ready = 0; +reg [31:0] RST_d; +reg [31:0] RST_q; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge CLK) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 32'b11111111111111111111111111111111; + end +end + +wire run_main; +assign run_main = 1'b1; + +M_main __main( + .clock(CLK), + .reset(RST_d), + .out_leds(__main_leds), +`ifdef OLED + .out_oled_mosi(__main_oled_mosi), + .out_oled_clk(__main_oled_clk), + .out_oled_csn(__main_oled_csn), + .out_oled_dc(__main_oled_dc), + .out_oled_resn(__main_oled_resn), +`endif +`ifdef VGA + .out_video_hs(__main_out_vga_hs), + .out_video_vs(__main_out_vga_vs), + .out_video_r(__main_out_vga_r), + .out_video_g(__main_out_vga_g), + .out_video_b(__main_out_vga_b), +`endif + .in_run(run_main) +); + +assign D1 = __main_leds[0+:1]; +assign D2 = __main_leds[1+:1]; +assign D3 = __main_leds[2+:1]; +assign D4 = __main_leds[3+:1]; +assign D5 = __main_leds[4+:1]; + +// OLED + +`ifdef OLED + +assign BR3 = __main_oled_mosi; +assign BR4 = __main_oled_clk; +assign BR5 = __main_oled_csn; +assign BR6 = __main_oled_dc; +assign BR7 = __main_oled_resn; + +`endif + +// VGA + +`ifdef VGA + +assign PMOD1 = __main_out_vga_r[5+:1]; +assign PMOD2 = __main_out_vga_r[4+:1]; +assign PMOD3 = __main_out_vga_r[3+:1]; +assign PMOD4 = __main_out_vga_r[2+:1]; +assign PMOD8 = __main_out_vga_r[1+:1]; +assign PMOD9 = __main_out_vga_r[0+:1]; + +assign TR10 = __main_out_vga_g[5+:1]; +assign TR9 = __main_out_vga_g[4+:1]; +assign TR8 = __main_out_vga_g[3+:1]; +assign TR7 = __main_out_vga_g[2+:1]; +assign TR6 = __main_out_vga_g[1+:1]; +assign TR5 = __main_out_vga_g[0+:1]; + +assign BR10 = __main_out_vga_b[5+:1]; +assign BR9 = __main_out_vga_b[4+:1]; +assign BR8 = __main_out_vga_b[3+:1]; +assign BR7 = __main_out_vga_b[2+:1]; +assign BR6 = __main_out_vga_b[1+:1]; +assign BR5 = __main_out_vga_b[0+:1]; + +assign PMOD7 = __main_out_vga_hs; +assign PMOD10 = __main_out_vga_vs; + +`endif + + +endmodule +# ----------------------------------------------------------------------------- +#- Icestick constraint file (.pcf) +#- By Juan Gonzalez (Obijuan) +#- April - 2016 +#- GPL license +# ----------------------------------------------------------------------------- +# -- Pinout: https://github.com/Obijuan/open-fpga-verilog-tutorial/blob/master/tutorial/doc/images/icestick_pinout.png +# -- Guide: https://github.com/Obijuan/open-fpga-verilog-tutorial/blob/master/tutorial/doc/icestickusermanual.pdf + +# -- Icestick leds map +# +# D1 +# D4 D5 D2 +# D3 +# +# -- D1-D4: Red leds +# -- D5: green led + + +# ------------ Red leds ------------------------------------------------------ +set_io --warn-no-port D1 99 +set_io --warn-no-port D2 98 +set_io --warn-no-port D3 97 +set_io --warn-no-port D4 96 + +# ------------ Green led ----------------------------------------------------- +set_io --warn-no-port D5 95 + +# ------------ IrDA ---------------------------------------------------------- +set_io --warn-no-port IrDA_TX 105 +set_io --warn-no-port IrDA_RX 106 + +#-- SD = 0, enable IrDA +set_io --warn-no-port SD 107 + +# ------------ PMOD connector ------------------------------------------------ +# +# Pmod standar numeration (Oriented according the icestick, with the +# usb connector pointing to the left and IRda to the right) +# +# -------- +# | 12 6 | +# | 11 5 | +# | 10 4 | +# | 9 3 | +# | 8 2 | +# | 7 1 | < +# -------- +# +# FPGA pins: +# +# ---------- +# | 3V3 3V3 | +# | GND GND | +# | 91 81 | +# | 90 80 | +# | 88 79 | +# | 87 78 | < +# ---------- +# +set_io --warn-no-port PMOD1 78 +set_io --warn-no-port PMOD2 79 +set_io --warn-no-port PMOD3 80 +set_io --warn-no-port PMOD4 81 +set_io --warn-no-port PMOD7 87 +set_io --warn-no-port PMOD8 88 +set_io --warn-no-port PMOD9 90 +set_io --warn-no-port PMOD10 91 + +# ------------------------ EXPANSION I/O ------------------------------------ +# +# -- Numeration +# +# Top Row (TR): +# v +# -------------------------------- +# | 10 9 8 7 6 5 4 3 2 1 | +# -------------------------------- +# +# Bottom Row (BR): +# +# v +# -------------------------------- +# | 10 9 8 7 6 5 4 3 2 1 | +# -------------------------------- +# +# --- FPGA pins +# +# Top Row (TR) +# v +# -------------------------------------------------- +# | 119 118 117 116 115 114 113 112 GND 3v3 | +# -------------------------------------------------- +# +# +# Bottom Row (BR) +# +# v +# ------------------------------------------------- +# | 44 45 47 48 56 60 61 62 GND 3v3 | +# ------------------------------------------------- +# +# -- Top Row +set_io --warn-no-port TR3 112 +set_io --warn-no-port TR4 113 +set_io --warn-no-port TR5 114 +set_io --warn-no-port TR6 115 +set_io --warn-no-port TR7 116 +set_io --warn-no-port TR8 117 +set_io --warn-no-port TR9 118 +set_io --warn-no-port TR10 119 +# +# -- Bottom Row +set_io --warn-no-port BR3 62 +set_io --warn-no-port BR4 61 +set_io --warn-no-port BR5 60 +set_io --warn-no-port BR6 56 +set_io --warn-no-port BR7 48 +set_io --warn-no-port BR8 47 +set_io --warn-no-port BR9 45 +set_io --warn-no-port BR10 44 + +# -------------------------- SYSTEM CLOCK ------------------------------------ +set_io --warn-no-port CLK 21 + +# -------------------------- FTDI -------------------------------------------- +# --- FTDI 0: +set_io --warn-no-port RES 66 +set_io --warn-no-port DONE 65 +set_io --warn-no-port SS 71 +set_io --warn-no-port MISO 67 +set_io --warn-no-port MOSI 68 +set_io --warn-no-port SCK 70 +# +# --- FTDI 1: (Serial port) +set_io --warn-no-port DCD 1 +set_io --warn-no-port DSR 2 +set_io --warn-no-port DTR 3 +set_io --warn-no-port CTS 4 +set_io --warn-no-port RTS 7 +set_io --warn-no-port TX 8 +set_io --warn-no-port RX 9 +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR +case "$(uname -s)" in +MINGW*) +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins +;; +*) +esac + +cd $BUILD_DIR + +rm build* + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +if ! type "nextpnr-ice40" > /dev/null; then + # try arachne-pnr instead + echo "nextpnr-ice40 not found, trying arachne-pnr instead" + yosys -q -p "synth_ice40 -blif build.blif" build.v + arachne-pnr -p $BOARD_DIR/icestick.pcf build.blif -o build.txt + icepack build.txt build.bin +else + yosys -p 'synth_ice40 -top top -json build.json' build.v + nextpnr-ice40 --hx1k --json build.json --pcf $BOARD_DIR/icestick.pcf --asc build.asc --package tq144 --freq 12 + icepack build.asc build.bin +fi + +iceprog build.bin +{ + "name": "icestick", + "variants": [ + { + "name" : "configurable", + "framework" : "icestick.v", + "pins" : [ + {"set" : "basic"}, + {"set" : "vga", "define" : "VGA=1"}, + {"set" : "oled", "define" : "OLED=1"} + ], + "builders": [ + { + "builder" : "edalize", + "description": "Build using Edalize", + "tool": "icestorm", + "tool_options": [ + { + "nextpnr_options": ["--hx1k", "--freq 12", "--package tq144", "--timing-allow-fail"], + "pnr": "next" + } + ], + "bitstream" : "build.bin", + "constraints": [{"name": "icestick.pcf", "file_type": "PCF"}], + "program": [{"cmd" : "iceprog", "args" : "build.bin"}] + }, + { + "builder" : "shell", + "command" : "icestick.sh", + "description": "Custom shell scripts using yosys and nextpnr" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint5", + "io": "output" + } + ], + "oled": [ + { + "name": "oled_clk", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_mosi", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_csn", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_resn", + "type": "uint1", + "io": "output" + }, + { + "name": "oled_dc", + "type": "uint1", + "io": "output" + } + ], + "vga": [ + { + "name": "vga_hs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_vs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_r", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_g", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_b", + "type": "uint6", + "io": "output" + } + ] + } +} +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +if hash make 2>/dev/null; then + export MAKE=make +else + export MAKE=mingw32-make +fi + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR + +if [[ -z "${VERILATOR_ROOT}" ]]; then +case "$(uname -s)" in +Linux) +unset VERILATOR_ROOT +;; +*) +export VERILATOR_ROOT=$SILICE_DIR/../tools/fpga-binutils/mingw64/ +;; +esac +echo "VERILATOR_ROOT is set to ${VERILATOR_ROOT}" +else +echo "VERILATOR_ROOT already defined, using its value" +fi + +u=$(echo "$1" | sed s:/:__:g | tr -d ".") + +echo "using directory $u" + +cd $BUILD_DIR + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +if [[ -z "${VGA}" ]] && [[ -z "${SDRAM}" ]]; then +VERILATOR_LIB="verilator_bare" +else +VERILATOR_LIB="verilator_vga" +fi + +echo "using verilator framework $VERILATOR_LIB" + +verilator -Wno-PINMISSING -Wno-WIDTH -O3 -cc build.v --top-module top +cd obj_dir +$MAKE -f Vtop.mk +$MAKE -f Vtop.mk $SILICE_DIR/../frameworks/verilator/$VERILATOR_LIB.o verilated.o +g++ -O3 $SILICE_DIR/../frameworks/verilator/$VERILATOR_LIB.o verilated.o Vtop__ALL.a $SILICE_DIR/../frameworks/verilator/libverilator_silice.a -o ../run_simul +cd .. + +./run_simul +{ + "name": "verilator", + "variants": [ + { + "name" : "configurable", + "framework" : "verilator.v", + "pins" : [ + {"set" : "basic"}, + {"set" : "vga", "define" : "VGA=1"}, + {"set" : "sdram", "define" : "SDRAM=1"} + ], + "builders": [ + { + "builder" : "shell", + "command" : "verilator.sh", + "description": "Simulates with verilator" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint8", + "io": "output" + } + ], + "vga": [ + { + "name": "vga_hs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_vs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_r", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_g", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_b", + "type": "uint6", + "io": "output" + } + ], + "sdram": [ + { + "name": "sdram_clock", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_dq_i", + "type": "uint16", + "io": "input" + }, + { + "name": "sdram_dq_o", + "type": "uint16", + "io": "output" + }, + { + "name": "sdram_dq_en", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_cle", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_dqm", + "type": "uint2", + "io": "output" + }, + { + "name": "sdram_cs", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_we", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_cas", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_ras", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_ba", + "type": "uint1", + "io": "output" + }, + { + "name": "sdram_a", + "type": "uint1", + "io": "output" + } + ] + } +} +`define VERILATOR 1 +`define COLOR_DEPTH 6 +`define SDRAM_WORD_WIDTH 16 + +$$VERILATOR = 1 +$$NUM_LEDS = 8 +$$SIMULATION = 1 +$$color_depth = 6 +$$color_max = 63 + +`timescale 1ns / 1ps +`default_nettype none + +module top( + // SDRAM + output reg sdram_clock, + output reg sdram_cle, + output reg [1:0] sdram_dqm, + output reg sdram_cs, + output reg sdram_we, + output reg sdram_cas, + output reg sdram_ras, + output reg [1:0] sdram_ba, + output reg [12:0] sdram_a, + input [15:0] sdram_dq_i, + output reg [15:0] sdram_dq_o, + output reg sdram_dq_en, + // VGA + output video_clock, + output reg [`COLOR_DEPTH-1:0] video_r, + output reg [`COLOR_DEPTH-1:0] video_g, + output reg [`COLOR_DEPTH-1:0] video_b, + output video_hs, + output video_vs, + output [5:0] sdram_word_width, + output [4:0] video_color_depth, + input clk + ); + +// this is used by the verilator framework +// -> to know the output color depth +assign video_color_depth = `COLOR_DEPTH; +// -> to know the sdram word width +assign sdram_word_width = `SDRAM_WORD_WIDTH; + +wire __main_sdram_clock; +wire __main_sdram_cle; +wire [1:0] __main_sdram_dqm; +wire __main_sdram_cs; +wire __main_sdram_we; +wire __main_sdram_cas; +wire __main_sdram_ras; +wire [1:0] __main_sdram_ba; +wire [12:0] __main_sdram_a; +wire [15:0] __main_sdram_dq_o; +wire __main_sdram_dq_en; + +wire __main_video_clock; +wire [`COLOR_DEPTH-1:0] __main_video_r; +wire [`COLOR_DEPTH-1:0] __main_video_g; +wire [`COLOR_DEPTH-1:0] __main_video_b; +wire __main_video_hs; +wire __main_video_vs; + +wire [7:0] __main_leds; + +// reset + +reg ready = 0; +reg [3:0] RST_d; +reg [3:0] RST_q; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge clk) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 4'b1111; + end +end + +// main + +wire run_main; +assign run_main = 1'b1; +wire done_main; + +M_main __main( + .clock(clk), + .reset(RST_d[0]), + .out_leds(__main_leds), +`ifdef SDRAM + .out_sdram_clock(__main_sdram_clock), + .out_sdram_cle(__main_sdram_cle), + .out_sdram_dqm(__main_sdram_dqm), + .out_sdram_cs(__main_sdram_cs), + .out_sdram_we(__main_sdram_we), + .out_sdram_cas(__main_sdram_cas), + .out_sdram_ras(__main_sdram_ras), + .out_sdram_ba(__main_sdram_ba), + .out_sdram_a(__main_sdram_a), + .in_sdram_dq_i(sdram_dq_i), + .out_sdram_dq_o(__main_sdram_dq_o), + .out_sdram_dq_en(__main_sdram_dq_en), +`endif +`ifdef VGA + .out_video_clock(__main_video_clock), + .out_video_r(__main_video_r), + .out_video_g(__main_video_g), + .out_video_b(__main_video_b), + .out_video_hs(__main_video_hs), + .out_video_vs(__main_video_vs), +`endif + .in_run(run_main), + .out_done(done_main) +); + +assign sdram_clock = __main_sdram_clock; +assign sdram_cle = __main_sdram_cle; +assign sdram_dqm = __main_sdram_dqm; +assign sdram_cs = __main_sdram_cs; +assign sdram_we = __main_sdram_we; +assign sdram_cas = __main_sdram_cas; +assign sdram_ras = __main_sdram_ras; +assign sdram_ba = __main_sdram_ba; +assign sdram_a = __main_sdram_a; +assign sdram_dq_o = __main_sdram_dq_o; +assign sdram_dq_en = __main_sdram_dq_en; + +assign video_clock = __main_video_clock; +assign video_r = __main_video_r; +assign video_g = __main_video_g; +assign video_b = __main_video_b; +assign video_hs = __main_video_hs; +assign video_vs = __main_video_vs; + +always @* begin + if (done_main && !RST_d[0]) $finish; +end + +endmodule +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/:$SILICE_DIR +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins + +cd $BUILD_DIR + +rm -rf build* *.rdf *.sty impl + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +cat << EOF > build.tcl +prj_create -name "build" -impl "impl" -dev LIFCL-40-9BG400C +prj_set_impl_opt {include path} {""} +prj_add_source "build.v" -work work +prj_add_source "$BOARD_DIR/crosslink_nx_evn.pdc" -work work +prj_set_impl_opt top "top" +prj_save +prj_run Synthesis -impl impl -forceOne +prj_run Map -impl impl +prj_run PAR -impl impl +prj_run Export -impl impl -task Bitgen +prj_close +EOF + +radiantc build.tcl > toto.log 2>&1 # toto.log - French touch ;-) + +openFPGALoader impl/build_impl.bit +# ---------------------------------------------------------------------------- +# +# CrosslinkNX evn constraint file (.pdc) +# Link +# https://www.latticesemi.com/en/Products/DevelopmentBoardsAndKits/CrossLink-NXEvaluationBoard +# +# ---------------------------------------------------------------------------- + +# -------------------------- SYSTEM CLOCK ------------------------------------ +ldc_set_location -site {L13} [get_ports CLK] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports CLK] + +ldc_set_location -site {C12} [get_ports OSC_P] +ldc_set_location -site {C11} [get_ports OSC_N] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33D} [get_ports OSC_P] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33D} [get_ports OSC_N] + +# ------------------------------ UART ---------------------------------------- +ldc_set_location -site {F18} [get_ports RX] +ldc_set_location -site {F16} [get_ports TX] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33D} [get_ports OSC_P] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33D} [get_ports OSC_N] + +# ------------------------- LED ---------------------------------------------- +ldc_set_location -site {E17} [get_ports LED0] +ldc_set_location -site {F13} [get_ports LED1] +ldc_set_location -site {G13} [get_ports LED2] +ldc_set_location -site {F14} [get_ports LED3] +ldc_set_location -site {L16} [get_ports LED4] +ldc_set_location -site {L15} [get_ports LED5] +ldc_set_location -site {L20} [get_ports LED6] +ldc_set_location -site {L19} [get_ports LED7] +ldc_set_location -site {R17} [get_ports LED8] +ldc_set_location -site {R18} [get_ports LED9] +ldc_set_location -site {U20} [get_ports LED10] +ldc_set_location -site {T20} [get_ports LED11] +ldc_set_location -site {W20} [get_ports LED12] +ldc_set_location -site {V20} [get_ports LED13] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED0] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED1] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED2] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED3] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED4] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED5] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED6] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED7] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED8] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED9] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED10] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED11] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED12] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports LED13] + +# ------------------------- Button ------------------------------------------- +ldc_set_location -site {G14} [get_ports SW2] +ldc_set_location -site {G15} [get_ports SW3] +ldc_set_location -site {G19} [get_ports SW4] +ldc_set_location -site {E11} [get_ports SW5] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SW2] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SW3] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SW4] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SW5] + +# ----------------------- DIP Switch ----------------------------------------- +ldc_set_location -site {N14} [get_ports SWITCH0] +ldc_set_location -site {M14} [get_ports SWITCH1] +ldc_set_location -site {M16} [get_ports SWITCH2] +ldc_set_location -site {M15} [get_ports SWITCH3] +ldc_set_location -site {N15} [get_ports SWITCH4] +ldc_set_location -site {N16} [get_ports SWITCH5] +ldc_set_location -site {M17} [get_ports SWITCH6] +ldc_set_location -site {M18} [get_ports SWITCH7] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH0] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH1] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH2] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH3] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH4] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH5] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH6] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports SWITCH7] + +# --------------------------- SPI Flash -------------------------------------- +ldc_set_location -site {} [get_ports FLASH_SCK] +ldc_set_location -site {} [get_ports FLASH_SSB] +ldc_set_location -site {} [get_ports FLASH_IO0] +ldc_set_location -site {} [get_ports FLASH_IO1] +ldc_set_location -site {} [get_ports FLASH_IO2] +ldc_set_location -site {} [get_ports FLASH_IO3] + +# ------------ PMOD0 connector --------- ------------------------------------- +ldc_set_location -site {D10} [get_ports PMOD0_1 ] +ldc_set_location -site {D9} [get_ports PMOD0_2 ] +ldc_set_location -site {D7} [get_ports PMOD0_3 ] +ldc_set_location -site {D8} [get_ports PMOD0_4 ] +ldc_set_location -site {D6} [get_ports PMOD0_7 ] +ldc_set_location -site {D5} [get_ports PMOD0_8 ] +ldc_set_location -site {D4} [get_ports PMOD0_9 ] +ldc_set_location -site {D3} [get_ports PMOD0_10] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_1 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_2 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_3 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_4 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_7 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_8 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_9 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD0_10] + +# ------------ PMOD1 connector ----------------------------------------------- +ldc_set_location -site {E10} [get_ports PMOD1_1 ] +ldc_set_location -site {E9} [get_ports PMOD1_2 ] +ldc_set_location -site {E7} [get_ports PMOD1_3 ] +ldc_set_location -site {E8} [get_ports PMOD1_4 ] +ldc_set_location -site {E4} [get_ports PMOD1_7 ] +ldc_set_location -site {E3} [get_ports PMOD1_8 ] +ldc_set_location -site {E2} [get_ports PMOD1_9 ] +ldc_set_location -site {F1} [get_ports PMOD1_10] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_1 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_2 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_3 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_4 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_7 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_8 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_9 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD1_10] + +# ------------ PMOD2 connector ----------------------------------------------- +ldc_set_location -site { J2} [get_ports PMOD2_1 ] +ldc_set_location -site { J1} [get_ports PMOD2_2 ] +ldc_set_location -site { K2} [get_ports PMOD2_3 ] +ldc_set_location -site { K1} [get_ports PMOD2_4 ] +ldc_set_location -site { K3} [get_ports PMOD2_7 ] +ldc_set_location -site { K4} [get_ports PMOD2_8 ] +ldc_set_location -site {D17} [get_ports PMOD2_9 ] +ldc_set_location -site {E18} [get_ports PMOD2_10] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_1 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_2 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_3 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_4 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_7 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_8 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_9 ] +ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports PMOD2_10] + +ldc_set_sysconfig {CONFIG_MODE=SPI_SERIAL MCCLK_FREQ=3.5} +`define CROSSLINKNX_EVN 1 +$$CROSSLINKNX_EVN=1 +$$HARDWARE=1 +$$NUM_LEDS=5 +$$VGA=1 +$$color_depth=6 +$$color_max =63 +$$config['bram_wenable_width'] = 'data' +$$config['dualport_bram_wenable0_width'] = 'data' +$$config['dualport_bram_wenable1_width'] = 'data' + +module top( + output LED0, + output LED1, + output LED2, + output LED3, + output LED4, +`ifdef VGA + output PMOD0_1, // r0 + output PMOD0_2, // r1 + output PMOD0_3, // r2 + output PMOD0_4, // r3 + + output PMOD0_7, // b0 + output PMOD0_8, // b1 + output PMOD0_9, // b2 + output PMOD0_10,// b3 + + output PMOD1_1, // g0 + output PMOD1_2, // g1 + output PMOD1_3, // g2 + output PMOD1_4, // g3 + + output PMOD1_7, // hs + output PMOD1_8, // vs +`endif + input CLK +); + +wire [4:0] __main_leds; + +// clock from design is used in case +// it relies on a PLL: in such cases +// we cannot use the clock fed into +// the PLL here +wire design_clk; + +`ifdef VGA +wire __main_out_vga_hs; +wire __main_out_vga_vs; +wire [5:0] __main_out_vga_r; +wire [5:0] __main_out_vga_g; +wire [5:0] __main_out_vga_b; +`endif + +BB u0_BB (.B(CLK), + .I(1'b0), + .T(1'b1), + .O(clk_s) +); + +reg ready = 0; +reg [31:0] RST_d; +reg [31:0] RST_q; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge design_clk) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 32'b111111111111111111111111111111; + end +end + +wire run_main; +assign run_main = 1'b1; + +M_main __main( + .clock(clk_s), + .out_clock(design_clk), + .reset(RST_d[0]), + .out_leds(__main_leds), +`ifdef VGA + .out_video_hs(__main_out_vga_hs), + .out_video_vs(__main_out_vga_vs), + .out_video_r(__main_out_vga_r), + .out_video_g(__main_out_vga_g), + .out_video_b(__main_out_vga_b), +`endif + .in_run(run_main) +); + +assign LED0 = __main_leds[0+:1]; +assign LED1 = __main_leds[1+:1]; +assign LED2 = __main_leds[2+:1]; +assign LED3 = __main_leds[3+:1]; +assign LED4 = __main_leds[4+:1]; + +// VGA + +`ifdef VGA + +assign PMOD0_1 = __main_out_vga_r[2+:1]; +assign PMOD0_2 = __main_out_vga_r[3+:1]; +assign PMOD0_3 = __main_out_vga_r[4+:1]; +assign PMOD0_4 = __main_out_vga_r[5+:1]; + +assign PMOD0_7 = __main_out_vga_b[2+:1]; +assign PMOD0_8 = __main_out_vga_b[3+:1]; +assign PMOD0_9 = __main_out_vga_b[4+:1]; +assign PMOD0_10 = __main_out_vga_b[5+:1]; + +assign PMOD1_1 = __main_out_vga_g[2+:1]; +assign PMOD1_2 = __main_out_vga_g[3+:1]; +assign PMOD1_3 = __main_out_vga_g[4+:1]; +assign PMOD1_4 = __main_out_vga_g[5+:1]; + +assign PMOD1_7 = __main_out_vga_hs; +assign PMOD1_8 = __main_out_vga_vs; + +`endif + +endmodule +{ + "name": "crosslink_nx_evn", + "variants": [ + { + "name": "configurable", + "framework" : "crosslink_nx_evn.v", + "pins": [ + {"set" : "basic"}, + {"set" : "vga", "define" : "VGA=1"} + ], + "builders": [ + { + "builder" : "edalize", + "description": "Build using Edalize", + "tool": "radiant", + "tool_options": [ + { + "part": "LIFCL-40-9BG400C" + } + ], + "bitstream" : "impl/build_impl.bit", + "constraints": [{"name": "crosslink_nx_evn.pdc", "file_type": "PDC"}], + "program": [{"cmd" : "openFPGALoader", "args" : "impl/build_impl.bit"}] + }, + { + "builder" : "shell", + "command" : "crosslink_nx_evn.sh", + "description": "Custom shell scripts using lattice radiant" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint5", + "io": "output" + } + ], + "vga": [ + { + "name": "vga_hs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_vs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_r", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_g", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_b", + "type": "uint6", + "io": "output" + } + ] + } +} +`define MOJO 1 +$$MOJO=1 +$$HARDWARE = 1 +$$NUM_LEDS = 8 +$$NUM_BTNS = 1 +$$color_depth = 6 +$$color_max = 63 + +module top( + input rst_n, + input cclk, + output [7:0] leds, + output spi_miso, + input spi_ss, + input spi_mosi, + input spi_sck, + output [3:0] spi_channel, + input avr_tx, + output avr_rx, + input avr_rx_busy, + // SDRAM + output sdram_clk, + output sdram_cle, + output sdram_dqm, + output sdram_cs, + output sdram_we, + output sdram_cas, + output sdram_ras, + output [1:0] sdram_ba, + output [12:0] sdram_a, + inout [7:0] sdram_dq, + // HDMI + output [3:0] gpdi_dp, + output [3:0] gpdi_dn, + input clk + ); + +wire [7:0] __main_out_leds; + +wire __main_spi_miso; +wire __main_out_avr_rx; +wire [3:0] __main_out_spi_channel; + +wire __main_out_sdram_clk; +wire __main_out_sdram_cle; +wire __main_out_sdram_dqm; +wire __main_out_sdram_cs; +wire __main_out_sdram_we; +wire __main_out_sdram_cas; +wire __main_out_sdram_ras; +wire [1:0] __main_out_sdram_ba; +wire [12:0] __main_out_sdram_a; +wire [3:0] __main_out_hdmi1_tmds; +wire [3:0] __main_out_hdmi1_tmdsb; + +wire run_main; +assign run_main = 1'b1; + +M_main __main( + .reset(~rst_n), + .in_run(run_main), + .out_leds(__main_out_leds), +`ifdef SDRAM + .inout_sdram_dq(sdram_dq), + .out_sdram_clk(__main_out_sdram_clk), + .out_sdram_cle(__main_out_sdram_cle), + .out_sdram_dqm(__main_out_sdram_dqm), + .out_sdram_cs(__main_out_sdram_cs), + .out_sdram_we(__main_out_sdram_we), + .out_sdram_cas(__main_out_sdram_cas), + .out_sdram_ras(__main_out_sdram_ras), + .out_sdram_ba(__main_out_sdram_ba), + .out_sdram_a(__main_out_sdram_a), +`endif +`ifdef HDMI + .out_gpdi_dp (__main_out_gpdi_dp), + .out_gpdi_dn (__main_out_gpdi_dn), +`endif + .clock(clk) +); + +assign spi_miso = 1'bz; +assign avr_rx = 1'bz; +assign spi_channel = 4'bzzzz; + +assign leds = __main_out_leds; + +`ifdef SDRAM +assign sdram_clk = __main_out_sdram_clk; +assign sdram_cle = __main_out_sdram_cle; +assign sdram_dqm = __main_out_sdram_dqm; +assign sdram_cs = __main_out_sdram_cs; +assign sdram_we = __main_out_sdram_we; +assign sdram_cas = __main_out_sdram_cas; +assign sdram_ras = __main_out_sdram_ras; +assign sdram_ba = __main_out_sdram_ba; +assign sdram_a = __main_out_sdram_a; +`else +assign sdram_clk = 1'bz; +assign sdram_cle = 1'bz; +assign sdram_dqm = 1'bz; +assign sdram_cs = 1'bz; +assign sdram_we = 1'bz; +assign sdram_cas = 1'bz; +assign sdram_ras = 1'bz; +assign sdram_ba = 2'bzz; +assign sdram_a = 12'bzzzzzzzzzzzz; +`endif + +`ifdef HDMI +assign gpdi_dp = __main_out_gpdi_dp; +assign gpdi_dn = __main_out_gpdi_dn; +`else +assign gpdi_dp = 4'bzzzz; +assign gpdi_dn = 4'bzzzz; +`endif + +endmodule +NET "clk" TNM_NET = clk; +TIMESPEC TS_clk = PERIOD "clk" 50 MHz HIGH 50%; + +NET "clk" LOC = P56 | IOSTANDARD = LVTTL; +NET "rst_n" LOC = P38 | IOSTANDARD = LVTTL; + +NET "cclk" LOC = P70 | IOSTANDARD = LVTTL; + +NET "leds<0>" LOC = P134 | IOSTANDARD = LVTTL; +NET "leds<1>" LOC = P133 | IOSTANDARD = LVTTL; +NET "leds<2>" LOC = P132 | IOSTANDARD = LVTTL; +NET "leds<3>" LOC = P131 | IOSTANDARD = LVTTL; +NET "leds<4>" LOC = P127 | IOSTANDARD = LVTTL; +NET "leds<5>" LOC = P126 | IOSTANDARD = LVTTL; +NET "leds<6>" LOC = P124 | IOSTANDARD = LVTTL; +NET "leds<7>" LOC = P123 | IOSTANDARD = LVTTL; + +NET "spi_mosi" LOC = P44 | IOSTANDARD = LVTTL; +NET "spi_miso" LOC = P45 | IOSTANDARD = LVTTL; +NET "spi_ss" LOC = P48 | IOSTANDARD = LVTTL; +NET "spi_sck" LOC = P43 | IOSTANDARD = LVTTL; +NET "spi_channel<0>" LOC = P46 | IOSTANDARD = LVTTL; +NET "spi_channel<1>" LOC = P61 | IOSTANDARD = LVTTL; +NET "spi_channel<2>" LOC = P62 | IOSTANDARD = LVTTL; +NET "spi_channel<3>" LOC = P65 | IOSTANDARD = LVTTL; + +NET "avr_tx" LOC = P55 | IOSTANDARD = LVTTL; +NET "avr_rx" LOC = P59 | IOSTANDARD = LVTTL; +NET "avr_rx_busy" LOC = P39 | IOSTANDARD = LVTTL; + +NET "sdram_clk" LOC = P29 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_cle" LOC = P30 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dqm" LOC = P74 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_cs" LOC = P84 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_we" LOC = P81 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_cas" LOC = P82 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_ras" LOC = P83 | IOSTANDARD = LVTTL | SLEW = FAST; + +NET "sdram_ba<0>" LOC = P85 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_ba<1>" LOC = P87 | IOSTANDARD = LVTTL | SLEW = FAST; + +NET "sdram_a<0>" LOC = P101 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<1>" LOC = P102 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<2>" LOC = P104 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<3>" LOC = P105 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<4>" LOC = P5 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<5>" LOC = P6 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<6>" LOC = P7 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<7>" LOC = P8 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<8>" LOC = P9 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<9>" LOC = P10 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<10>" LOC = P88 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<11>" LOC = P27 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_a<12>" LOC = P26 | IOSTANDARD = LVTTL | SLEW = FAST; + +NET "sdram_dq<0>" LOC = P75 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dq<1>" LOC = P78 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dq<2>" LOC = P79 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dq<3>" LOC = P80 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dq<4>" LOC = P34 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dq<5>" LOC = P35 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dq<6>" LOC = P40 | IOSTANDARD = LVTTL | SLEW = FAST; +NET "sdram_dq<7>" LOC = P41 | IOSTANDARD = LVTTL | SLEW = FAST; + +NET "gpdi_dp(3)" LOC = "P144" |IOSTANDARD = TMDS_33 | CLOCK_DEDICATED_ROUTE = FALSE ; # Clock +NET "gpdi_dn(3)" LOC = "P143" |IOSTANDARD = TMDS_33 | CLOCK_DEDICATED_ROUTE = FALSE ; +NET "gpdi_dp(2)" LOC = "P138" |IOSTANDARD = TMDS_33 ; # Red +NET "gpdi_dn(2)" LOC = "P137" |IOSTANDARD = TMDS_33 ; +NET "gpdi_dp(1)" LOC = "P140" |IOSTANDARD = TMDS_33 ; # Green +NET "gpdi_dn(1)" LOC = "P139" |IOSTANDARD = TMDS_33 ; +NET "gpdi_dp(0)" LOC = "P142" |IOSTANDARD = TMDS_33 ; # Blue +NET "gpdi_dn(0)" LOC = "P141" |IOSTANDARD = TMDS_33 ; +{ + "name": "mojov3", + "variants": [ + { + "name": "configurable", + "framework" : "mojov3.v", + "pins": [ + {"set" : "basic"} + ], + "builders": [ + { + "builder" : "edalize", + "description": "Build using Edalize", + "tool": "ise", + "tool_options": [ + { + "family": "spartan6", + "device": "xc6slx9", + "package": "tqg144", + "speed" : -2 + } + ], + "toplevel" : "top", + "bitstream" : "top.bin", + "constraints": [ + {"name": "mojov3.ucf", "file_type": "UCF"} + ], + "program": [ + {"cmd" : "promgen", "args" : "-u 0 top.bit -p bin -spi -w"}, + {"cmd" : "printf", "args" : "\"\\n\\nThe programming file has been generated in BUILD_mojov3/top.bin, please use Mojo Loader to program your board\\n\\n\""}, + {"cmd" : "mojo-loader", "args" : "-b top.bin"} + ] + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint8", + "io" : "output" + } + ] + } +} +`define ICARUS 1 +$$ICARUS = 1 +$$SIMULATION = 1 +$$NUM_LEDS = 8 +$$color_depth = 6 +$$color_max = 63 +$$config['bram_wenable_width'] = 'data' +$$config['dualport_bram_wenable0_width'] = 'data' +$$config['dualport_bram_wenable1_width'] = 'data' + +`timescale 1ns / 1ps + +module top; + +reg clk; +reg rst_n; + +wire [7:0] __main_leds; + +`ifdef VGA +wire __main_video_clock; +wire __main_video_hs; +wire __main_video_vs; +wire [5:0] __main_video_r; +wire [5:0] __main_video_g; +wire [5:0] __main_video_b; +`endif + +`ifdef UART +wire __main_uart_tx; +wire __main_uart_rx = 0; +`endif + +`ifdef HDMI +wire [3:0] __main_out_gpdi_dp; +wire [3:0] __main_out_gpdi_dn; +`endif + +initial begin + clk = 1'b0; + rst_n = 1'b0; + $display("icarus framework started"); + $dumpfile("icarus.fst"); +`ifdef DUMP_TOP_ONLY + $dumpvars(1,top); // dump only top (faster and smaller) +`else + $dumpvars(0,top); // dump all (for full debugging) +`endif +`ifdef CLOCK_25MHz + // generate a 25 MHz clock + repeat(4) #20 clk = ~clk; + rst_n = 1'b1; + forever #20 clk = ~clk; +`else + // generate a 100 MHz clock + repeat(4) #5 clk = ~clk; + rst_n = 1'b1; + forever #5 clk = ~clk; +`endif +end + +reg ready = 0; +reg [3:0] RST_d; +reg [3:0] RST_q; + +always @* begin + RST_d = RST_q >> 1; +end + +always @(posedge clk) begin + if (ready) begin + RST_q <= RST_d; + end else begin + ready <= 1; + RST_q <= 4'b1111; + end +end + +wire run_main; +assign run_main = 1'b1; +wire done_main; + +M_main __main( + .clock(clk), + .reset(RST_d[0]), + .out_leds(__main_leds), +`ifdef VGA + .out_video_clock(__main_video_clock), + .out_video_r(__main_video_r), + .out_video_g(__main_video_g), + .out_video_b(__main_video_b), + .out_video_hs(__main_video_hs), + .out_video_vs(__main_video_vs), +`endif +`ifdef UART + .out_uart_tx(__main_uart_tx), + .in_uart_rx(__main_uart_rx), +`endif +`ifdef HDMI + .out_gpdi_dp (__main_out_gpdi_dp), + .out_gpdi_dn (__main_out_gpdi_dn), +`endif + .in_run(run_main), + .out_done(done_main) +); + +always @* begin + if (done_main && !RST_d[0]) $finish; +end + +endmodule + +#!/bin/bash + +case "$(uname -s)" in +MINGW*|CYGWIN*) +SILICE_DIR=`cygpath $SILICE_DIR` +BUILD_DIR=`cygpath $BUILD_DIR` +FRAMEWORKS_DIR=`cygpath $FRAMEWORKS_DIR` +FRAMEWORK_FILE=`cygpath $FRAMEWORK_FILE` +BOARD_DIR=`cygpath $BOARD_DIR` +;; +*) +esac + +echo "build script: SILICE_DIR = $SILICE_DIR" +echo "build script: BUILD_DIR = $BUILD_DIR" +echo "build script: BOARD_DIR = $BOARD_DIR" +echo "build script: FRAMEWORKS_DIR = $FRAMEWORKS_DIR" +echo "build script: FRAMEWORK_FILE = $FRAMEWORK_FILE" + +export PATH=$PATH:$SILICE_DIR:$SILICE_DIR/../tools/fpga-binutils/mingw64/bin/ +case "$(uname -s)" in +MINGW*) +export PYTHONHOME=/mingw64/bin +export PYTHONPATH=/mingw64/lib/python3.8/ +export QT_QPA_PLATFORM_PLUGIN_PATH=/mingw64/share/qt5/plugins +;; +*) +esac + +cd $BUILD_DIR + +rm build* icarus.fst icarus.fst.hier + +silice --frameworks_dir $FRAMEWORKS_DIR -f $FRAMEWORK_FILE -o build.v $1 "${@:2}" + +iverilog -o build build.v +vvp build -fst + +gtkwave icarus.fst +{ + "name": "icarus", + "variants": [ + { + "name" : "configurable", + "framework" : "icarus.v", + "pins" : [ + {"set" : "basic"}, + {"set" : "vga", "define" : "VGA=1"}, + {"set" : "hdmi", "define" : "HDMI=1"}, + {"set" : "uart", "define" : "UART=1"}, + {"set" : "top_only", "define" : "DUMP_TOP_ONLY=1"} + ], + "builders": [ + { + "builder" : "shell", + "command" : "icarus.sh", + "description": "Simulates with icarus and opens gtkwave for visualization" + } + ] + } + ], + "pins": { + "basic": [ + { + "name": "leds", + "type": "uint8", + "io": "output" + } + ], + "uart": [ + { + "name": "uart_tx", + "type": "uint1", + "io" : "output" + }, + { + "name": "uart_rx", + "type": "uint1", + "io" : "input" + } + ], + "vga": [ + { + "name": "vga_hs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_vs", + "type": "uint1", + "io": "output" + }, + { + "name": "vga_r", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_g", + "type": "uint6", + "io": "output" + }, + { + "name": "vga_b", + "type": "uint6", + "io": "output" + } + ], + "hdmi": [ + { + "name": "gpdi_dq", + "type": "uint1", + "io": "output" + }, + { + "name": "gpdi_dn", + "type": "uint1", + "io": "output" + } + ] + } +} diff --git a/src/worker/fs/fsSilice.js b/src/worker/fs/fsSilice.js new file mode 100644 index 00000000..2254f1bc --- /dev/null +++ b/src/worker/fs/fsSilice.js @@ -0,0 +1,213 @@ + + var Module = typeof Module !== 'undefined' ? Module : {}; + + if (!Module.expectedDataFileDownloads) { + Module.expectedDataFileDownloads = 0; + } + Module.expectedDataFileDownloads++; + (function() { + var loadPackage = function(metadata) { + + var PACKAGE_PATH; + if (typeof window === 'object') { + PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/'); + } else if (typeof location !== 'undefined') { + // worker + PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/'); + } else { + throw 'using preloaded data can only be done on a web page or in a web worker'; + } + var PACKAGE_NAME = '/home/hugg/8bitworkshop-compilers/output/fs/fsSilice.data'; + var REMOTE_PACKAGE_BASE = 'fsSilice.data'; + if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) { + Module['locateFile'] = Module['locateFilePackage']; + err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)'); + } + var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE; + + var REMOTE_PACKAGE_SIZE = metadata['remote_package_size']; + var PACKAGE_UUID = metadata['package_uuid']; + + function fetchRemotePackage(packageName, packageSize, callback, errback) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', packageName, true); + xhr.responseType = 'arraybuffer'; + xhr.onprogress = function(event) { + var url = packageName; + var size = packageSize; + if (event.total) size = event.total; + if (event.loaded) { + if (!xhr.addedTotal) { + xhr.addedTotal = true; + if (!Module.dataFileDownloads) Module.dataFileDownloads = {}; + Module.dataFileDownloads[url] = { + loaded: event.loaded, + total: size + }; + } else { + Module.dataFileDownloads[url].loaded = event.loaded; + } + var total = 0; + var loaded = 0; + var num = 0; + for (var download in Module.dataFileDownloads) { + var data = Module.dataFileDownloads[download]; + total += data.total; + loaded += data.loaded; + num++; + } + total = Math.ceil(total * Module.expectedDataFileDownloads/num); + if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')'); + } else if (!Module.dataFileDownloads) { + if (Module['setStatus']) Module['setStatus']('Downloading data...'); + } + }; + xhr.onerror = function(event) { + throw new Error("NetworkError for: " + packageName); + } + xhr.onload = function(event) { + if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + var packageData = xhr.response; + callback(packageData); + } else { + throw new Error(xhr.statusText + " : " + xhr.responseURL); + } + }; + xhr.send(null); + }; + + function handleError(error) { + console.error('package error:', error); + }; + + var fetchedCallback = null; + var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null; + + if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) { + if (fetchedCallback) { + fetchedCallback(data); + fetchedCallback = null; + } else { + fetched = data; + } + }, handleError); + + function runWithFS() { + + function assert(check, msg) { + if (!check) throw msg + new Error().stack; + } + Module['FS_createPath']('/', 'frameworks', true, true); +Module['FS_createPath']('/frameworks', 'templates', true, true); +Module['FS_createPath']('/frameworks', 'libraries', true, true); +Module['FS_createPath']('/frameworks', 'verilator', true, true); +Module['FS_createPath']('/frameworks', 'boards', true, true); +Module['FS_createPath']('/frameworks/boards', 'icebreaker', true, true); +Module['FS_createPath']('/frameworks/boards', 'orangecrab', true, true); +Module['FS_createPath']('/frameworks/boards', 'de10nano', true, true); +Module['FS_createPath']('/frameworks/boards', 'techgraph', true, true); +Module['FS_createPath']('/frameworks/boards', '8bitworkshop', true, true); +Module['FS_createPath']('/frameworks/boards', 'fomu', true, true); +Module['FS_createPath']('/frameworks/boards', 'ulx3s', true, true); +Module['FS_createPath']('/frameworks/boards', 'icestick', true, true); +Module['FS_createPath']('/frameworks/boards', 'verilator', true, true); +Module['FS_createPath']('/frameworks/boards', 'crosslink_nx_evn', true, true); +Module['FS_createPath']('/frameworks/boards', 'mojov3', true, true); +Module['FS_createPath']('/frameworks/boards', 'icarus', true, true); + + /** @constructor */ + function DataRequest(start, end, audio) { + this.start = start; + this.end = end; + this.audio = audio; + } + DataRequest.prototype = { + requests: {}, + open: function(mode, name) { + this.name = name; + this.requests[name] = this; + Module['addRunDependency']('fp ' + this.name); + }, + send: function() {}, + onload: function() { + var byteArray = this.byteArray.subarray(this.start, this.end); + this.finish(byteArray); + }, + finish: function(byteArray) { + var that = this; + + Module['FS_createDataFile'](this.name, null, byteArray, true, true, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change + Module['removeRunDependency']('fp ' + that.name); + + this.requests[this.name] = null; + } + }; + + var files = metadata['files']; + for (var i = 0; i < files.length; ++i) { + new DataRequest(files[i]['start'], files[i]['end'], files[i]['audio']).open('GET', files[i]['filename']); + } + + + function processPackageData(arrayBuffer) { + assert(arrayBuffer, 'Loading data file failed.'); + assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData'); + var byteArray = new Uint8Array(arrayBuffer); + var curr; + + // Reuse the bytearray from the XHR as the source for file reads. + DataRequest.prototype.byteArray = byteArray; + + var files = metadata['files']; + for (var i = 0; i < files.length; ++i) { + DataRequest.prototype.requests[files[i].filename].onload(); + } + Module['removeRunDependency']('datafile_/home/hugg/8bitworkshop-compilers/output/fs/fsSilice.data'); + + }; + Module['addRunDependency']('datafile_/home/hugg/8bitworkshop-compilers/output/fs/fsSilice.data'); + + if (!Module.preloadResults) Module.preloadResults = {}; + + Module.preloadResults[PACKAGE_NAME] = {fromCache: false}; + if (fetched) { + processPackageData(fetched); + fetched = null; + } else { + fetchedCallback = processPackageData; + } + + } + if (Module['calledRun']) { + runWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it + } + + Module['removeRunDependency']('fsSilice.js.metadata'); + } + + function runMetaWithFS() { + Module['addRunDependency']('fsSilice.js.metadata'); + var REMOTE_METADATA_NAME = Module['locateFile'] ? Module['locateFile']('fsSilice.js.metadata', '') : 'fsSilice.js.metadata'; + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + loadPackage(JSON.parse(xhr.responseText)); + } + } + xhr.open('GET', REMOTE_METADATA_NAME, true); + xhr.overrideMimeType('application/json'); + xhr.send(null); + } + + if (Module['calledRun']) { + runMetaWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runMetaWithFS); + } + + })(); + \ No newline at end of file diff --git a/src/worker/fs/fsSilice.js.metadata b/src/worker/fs/fsSilice.js.metadata new file mode 100644 index 00000000..6f526cc2 --- /dev/null +++ b/src/worker/fs/fsSilice.js.metadata @@ -0,0 +1 @@ +{"files":[{"filename":"/frameworks/templates/dualport_bram_altera.v.in","start":0,"end":1092,"audio":0},{"filename":"/frameworks/templates/bram_generic.v.in","start":1092,"end":1660,"audio":0},{"filename":"/frameworks/templates/dualport_bram_generic.v.in","start":1660,"end":2692,"audio":0},{"filename":"/frameworks/templates/simple_dualport_bram_generic.v.in","start":2692,"end":3425,"audio":0},{"filename":"/frameworks/templates/brom_generic.v.in","start":3425,"end":3779,"audio":0},{"filename":"/frameworks/libraries/memory_ports.ice","start":3779,"end":4751,"audio":0},{"filename":"/frameworks/verilator/VgaChip.cpp","start":4751,"end":5644,"audio":0},{"filename":"/frameworks/verilator/video_out.cpp","start":5644,"end":13267,"audio":0},{"filename":"/frameworks/verilator/verilator_bare.cpp","start":13267,"end":14064,"audio":0},{"filename":"/frameworks/verilator/verilator_vga.cpp","start":14064,"end":16635,"audio":0},{"filename":"/frameworks/verilator/sdr_sdram.h","start":16635,"end":23554,"audio":0},{"filename":"/frameworks/verilator/sdr_sdram.cpp","start":23554,"end":84598,"audio":0},{"filename":"/frameworks/verilator/VgaChip.h","start":84598,"end":85371,"audio":0},{"filename":"/frameworks/verilator/CMakeLists.txt","start":85371,"end":86531,"audio":0},{"filename":"/frameworks/verilator/video_out.h","start":86531,"end":88965,"audio":0},{"filename":"/frameworks/boards/boards.json","start":88965,"end":89462,"audio":0},{"filename":"/frameworks/boards/icebreaker/icebreaker.sh","start":89462,"end":90534,"audio":0},{"filename":"/frameworks/boards/icebreaker/icebreaker.pcf","start":90534,"end":92627,"audio":0},{"filename":"/frameworks/boards/icebreaker/board.json","start":92627,"end":94616,"audio":0},{"filename":"/frameworks/boards/icebreaker/icebreaker.v","start":94616,"end":97259,"audio":0},{"filename":"/frameworks/boards/orangecrab/orangecrab.sh","start":97259,"end":98456,"audio":0},{"filename":"/frameworks/boards/orangecrab/orangecrab.v","start":98456,"end":99148,"audio":0},{"filename":"/frameworks/boards/orangecrab/board.json","start":99148,"end":100338,"audio":0},{"filename":"/frameworks/boards/orangecrab/pinout.lpf","start":100338,"end":102370,"audio":0},{"filename":"/frameworks/boards/de10nano/pins.tcl","start":102370,"end":109177,"audio":0},{"filename":"/frameworks/boards/de10nano/board.json","start":109177,"end":112617,"audio":0},{"filename":"/frameworks/boards/de10nano/build.sdc","start":112617,"end":113425,"audio":0},{"filename":"/frameworks/boards/de10nano/de10nano.v","start":113425,"end":117659,"audio":0},{"filename":"/frameworks/boards/techgraph/techgraph.sh","start":117659,"end":118661,"audio":0},{"filename":"/frameworks/boards/techgraph/techgraph.v","start":118661,"end":119127,"audio":0},{"filename":"/frameworks/boards/techgraph/board.json","start":119127,"end":119644,"audio":0},{"filename":"/frameworks/boards/8bitworkshop/8bitworkshop.v","start":119644,"end":120743,"audio":0},{"filename":"/frameworks/boards/8bitworkshop/8bitworkshop.sh","start":120743,"end":122394,"audio":0},{"filename":"/frameworks/boards/8bitworkshop/board.json","start":122394,"end":123719,"audio":0},{"filename":"/frameworks/boards/fomu/board.json","start":123719,"end":125167,"audio":0},{"filename":"/frameworks/boards/fomu/fomu-hacker.pcf","start":125167,"end":125796,"audio":0},{"filename":"/frameworks/boards/fomu/fomu.v","start":125796,"end":129036,"audio":0},{"filename":"/frameworks/boards/fomu/fomu.sh","start":129036,"end":130320,"audio":0},{"filename":"/frameworks/boards/ulx3s/ulx3s.v","start":130320,"end":136526,"audio":0},{"filename":"/frameworks/boards/ulx3s/ulx3s.lpf","start":136526,"end":159345,"audio":0},{"filename":"/frameworks/boards/ulx3s/ulx3s.sh","start":159345,"end":160626,"audio":0},{"filename":"/frameworks/boards/ulx3s/board.json","start":160626,"end":165574,"audio":0},{"filename":"/frameworks/boards/icestick/icestick.v","start":165574,"end":169049,"audio":0},{"filename":"/frameworks/boards/icestick/icestick.pcf","start":169049,"end":173089,"audio":0},{"filename":"/frameworks/boards/icestick/icestick.sh","start":173089,"end":174461,"audio":0},{"filename":"/frameworks/boards/icestick/board.json","start":174461,"end":176533,"audio":0},{"filename":"/frameworks/boards/verilator/verilator.sh","start":176533,"end":178176,"audio":0},{"filename":"/frameworks/boards/verilator/board.json","start":178176,"end":180401,"audio":0},{"filename":"/frameworks/boards/verilator/verilator.v","start":180401,"end":183909,"audio":0},{"filename":"/frameworks/boards/crosslink_nx_evn/crosslink_nx_evn.sh","start":183909,"end":185243,"audio":0},{"filename":"/frameworks/boards/crosslink_nx_evn/crosslink_nx_evn.pdc","start":185243,"end":192490,"audio":0},{"filename":"/frameworks/boards/crosslink_nx_evn/crosslink_nx_evn.v","start":192490,"end":194998,"audio":0},{"filename":"/frameworks/boards/crosslink_nx_evn/board.json","start":194998,"end":196456,"audio":0},{"filename":"/frameworks/boards/mojov3/mojov3.v","start":196456,"end":199292,"audio":0},{"filename":"/frameworks/boards/mojov3/mojov3.ucf","start":199292,"end":202847,"audio":0},{"filename":"/frameworks/boards/mojov3/board.json","start":202847,"end":203956,"audio":0},{"filename":"/frameworks/boards/icarus/icarus.v","start":203956,"end":205986,"audio":0},{"filename":"/frameworks/boards/icarus/icarus.sh","start":205986,"end":206936,"audio":0},{"filename":"/frameworks/boards/icarus/board.json","start":206936,"end":208550,"audio":0}],"remote_package_size":208550,"package_uuid":"98d85071-8779-43bb-abac-62cde992bbc4"} \ No newline at end of file diff --git a/src/worker/lib/verilog/8bitworkshop.v b/src/worker/lib/verilog/8bitworkshop.v new file mode 100755 index 00000000..ad824346 --- /dev/null +++ b/src/worker/lib/verilog/8bitworkshop.v @@ -0,0 +1,60 @@ +/* for Silice: https://github.com/sylefeb/Silice */ + +`define VERILATOR 1 +`define COLOR_DEPTH 8 + +/*verilator lint_off pinmissing */ +/*verilator lint_off undriven */ +/*verilator lint_off width */ + +$$VERILATOR = 1 +$$NUM_LEDS = 0 +$$SIMULATION = 1 +$$color_depth = 8 +$$color_max = 255 + +`timescale 1ns / 1ps +`default_nettype none + +module top( +`ifdef NTSC + // NTSC + output reg [31:0] rgb, + output hsync, + output vsync, +`endif + input clk, + input reset + ); + +wire [7:0] __main_video_r; +wire [7:0] __main_video_g; +wire [7:0] __main_video_b; +wire __main_video_hs; +wire __main_video_vs; + +// main + +wire run_main; +assign run_main = 1'b1; +wire done_main; + +M_main __main( + .clock(clk), + .reset(reset), +`ifdef NTSC + .out_video_r(__main_video_r), + .out_video_g(__main_video_g), + .out_video_b(__main_video_b), + .out_video_hs(__main_video_hs), + .out_video_vs(__main_video_vs), +`endif + .in_run(run_main), + .out_done(done_main) +); + +assign rgb = {8'hff, __main_video_b, __main_video_g, __main_video_r}; +assign hsync = __main_video_hs; +assign vsync = __main_video_vs; + +endmodule diff --git a/src/worker/wasm/silice.js b/src/worker/wasm/silice.js new file mode 100644 index 00000000..85f2d6f0 --- /dev/null +++ b/src/worker/wasm/silice.js @@ -0,0 +1,21 @@ + +var silice = (function() { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(silice) { + silice = silice || {}; + +var Module=typeof silice!=="undefined"?silice:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="silice.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Ia"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Ja"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};var _emscripten_get_now_is_monotonic=true;function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(a0,a1){return _clock_gettime(a0,a1)}var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(size){return _malloc(size+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function _atexit(func,arg){}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-ExceptionInfoAttrs.SIZE;this.set_type=function(type){HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=type};this.get_type=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){var ptrSize=4;HEAP32[this.ptr+ptrSize>>2]=adjustedPtr};this.get_adjusted_ptr=function(){var ptrSize=4;return HEAP32[this.ptr+ptrSize>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}function ___cxa_call_unexpected(exception){err("Unexpected exception thrown, this is not properly supported - aborting");ABORT=true;throw exception}function ___cxa_current_primary_exception(){if(!exceptionCaught.length){return 0}var catchInfo=exceptionCaught[exceptionCaught.length-1];exception_addRef(catchInfo.get_exception_info());return catchInfo.get_base_ptr()}function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){wasmTable.get(destructor)(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_decrement_exception_refcount(ptr){if(!ptr)return;exception_decRef(new ExceptionInfo(ptr))}var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0|0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0|0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType|0);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType|0);return catchInfo.ptr|0}function ___cxa_find_matching_catch_3(){var thrown=exceptionLast;if(!thrown){setTempRet0(0|0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0|0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType|0);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType|0);return catchInfo.ptr|0}function ___cxa_find_matching_catch_4(){var thrown=exceptionLast;if(!thrown){setTempRet0(0|0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0|0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType|0);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType|0);return catchInfo.ptr|0}function ___cxa_find_matching_catch_5(){var thrown=exceptionLast;if(!thrown){setTempRet0(0|0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0|0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType|0);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType|0);return catchInfo.ptr|0}function ___cxa_find_matching_catch_8(){var thrown=exceptionLast;if(!thrown){setTempRet0(0|0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0|0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType|0);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType|0);return catchInfo.ptr|0}function ___cxa_increment_exception_refcount(ptr){if(!ptr)return;exception_addRef(new ExceptionInfo(ptr))}function ___cxa_rethrow(){var catchInfo=exceptionCaught.pop();var info=catchInfo.get_exception_info();var ptr=catchInfo.get_base_ptr();if(!info.get_rethrown()){exceptionCaught.push(catchInfo);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}else{catchInfo.free()}exceptionLast=ptr;throw ptr}function ___cxa_rethrow_primary_exception(ptr){if(!ptr)return;var catchInfo=new CatchInfo;catchInfo.set_base_ptr(ptr);var info=catchInfo.get_exception_info();exceptionCaught.push(catchInfo);info.set_rethrown(true);___cxa_rethrow()}function ___cxa_thread_atexit(a0,a1){return _atexit(a0,a1)}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function ___cxa_uncaught_exceptions(){return uncaughtExceptionCount}function _gmtime_r(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();HEAP32[tmPtr+36>>2]=0;HEAP32[tmPtr+32>>2]=0;var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;if(!_gmtime_r.GMTString)_gmtime_r.GMTString=allocateUTF8("GMT");HEAP32[tmPtr+40>>2]=_gmtime_r.GMTString;return tmPtr}function ___gmtime_r(a0,a1){return _gmtime_r(a0,a1)}function _tzset(){if(_tzset.called)return;_tzset.called=true;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[__get_timezone()>>2]=stdTimezoneOffset*60;HEAP32[__get_daylight()>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function ___localtime_r(a0,a1){return _localtime_r(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size},write:function(stream,buffer,offset,length,position){throw new FS.ErrnoError(29)},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(28)}return position}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_dup2(oldfd,suggestFD){try{var old=SYSCALLS.getStreamFromFD(oldfd);if(old.fd===suggestFD)return suggestFD;return SYSCALLS.doDup(old.path,old.flags,suggestFD)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_dup3(fd,suggestFD,flags){try{var old=SYSCALLS.getStreamFromFD(fd);if(old.fd===suggestFD)return-28;return SYSCALLS.doDup(old.path,old.flags,suggestFD)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_readlink(path,buf,bufsize){try{path=SYSCALLS.getStr(path);return SYSCALLS.doReadlink(path,buf,bufsize)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_rename(old_path,new_path){try{old_path=SYSCALLS.getStr(old_path);new_path=SYSCALLS.getStr(new_path);FS.rename(old_path,new_path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_unlink(path){try{path=SYSCALLS.getStr(path);FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _abort(){abort()}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function _difftime(time1,time0){return time1-time0}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_longjmp(a0,a1){return _longjmp(a0,a1)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){try{var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _getTempRet0(){return getTempRet0()|0}function _llvm_eh_typeid_for(type){return type}function _mktime(tmPtr){_tzset();var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _setTempRet0($i){setTempRet0($i|0)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _system(command){if(ENVIRONMENT_IS_NODE){if(!command)return 1;var cmdstr=UTF8ToString(command);if(!cmdstr.length)return 0;var cp=require("child_process");var ret=cp.spawnSync(cmdstr,[],{shell:true,stdio:"inherit"});var _W_EXITCODE=function(ret,sig){return ret<<8|sig};if(ret.status===null){var signalToNumber=function(sig){switch(sig){case"SIGHUP":return 1;case"SIGINT":return 2;case"SIGQUIT":return 3;case"SIGFPE":return 8;case"SIGKILL":return 9;case"SIGALRM":return 14;case"SIGTERM":return 15}return 2};return _W_EXITCODE(0,signalToNumber(ret.signal))}return _W_EXITCODE(ret.status,0)}if(!command)return 0;setErrNo(6);return-1}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"ya":___clock_gettime,"m":___cxa_allocate_exception,"q":___cxa_begin_catch,"$":___cxa_call_unexpected,"ka":___cxa_current_primary_exception,"T":___cxa_decrement_exception_refcount,"x":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"i":___cxa_find_matching_catch_3,"G":___cxa_find_matching_catch_4,"B":___cxa_find_matching_catch_5,"Ca":___cxa_find_matching_catch_8,"n":___cxa_free_exception,"S":___cxa_increment_exception_refcount,"_":___cxa_rethrow,"ja":___cxa_rethrow_primary_exception,"N":___cxa_thread_atexit,"u":___cxa_throw,"la":___cxa_uncaught_exceptions,"qa":___gmtime_r,"pa":___localtime_r,"e":___resumeException,"sa":___sys_dup2,"ta":___sys_dup3,"O":___sys_fcntl64,"Ba":___sys_fstat64,"za":___sys_getcwd,"va":___sys_ioctl,"xa":___sys_lstat64,"P":___sys_open,"Aa":___sys_readlink,"ra":___sys_rename,"wa":___sys_rmdir,"W":___sys_stat64,"V":___sys_unlink,"Y":_abort,"Z":_clock,"Fa":_difftime,"X":_emscripten_longjmp,"ga":_emscripten_memcpy_big,"ha":_emscripten_resize_heap,"na":_environ_get,"oa":_environ_sizes_get,"w":_exit,"I":_fd_close,"ma":_fd_fdstat_get,"ua":_fd_read,"ba":_fd_seek,"U":_fd_write,"a":_getTempRet0,"Q":invoke_diii,"R":invoke_fiii,"v":invoke_i,"d":invoke_ii,"c":invoke_iii,"f":invoke_iiii,"r":invoke_iiiii,"s":invoke_iiiiii,"A":invoke_iiiiiii,"D":invoke_iiiiiiii,"H":invoke_iiiiiiiii,"L":invoke_iiiiiiiiiiii,"Ha":invoke_iiiiiiiiiiiii,"fa":invoke_iiij,"da":invoke_jiii,"aa":invoke_jiiii,"k":invoke_v,"j":invoke_vi,"g":invoke_vii,"h":invoke_viii,"l":invoke_viiii,"o":invoke_viiiii,"p":invoke_viiiiii,"C":invoke_viiiiiii,"E":invoke_viiiiiiii,"F":invoke_viiiiiiiii,"z":invoke_viiiiiiiiii,"y":invoke_viiiiiiiiiii,"K":invoke_viiiiiiiiiiiiiii,"ca":invoke_viij,"ea":invoke_vij,"t":_llvm_eh_typeid_for,"Da":_mktime,"J":_setTempRet0,"Ga":_strftime,"ia":_strftime_l,"Ea":_system,"M":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Ka"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["La"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Ma"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Na"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Oa"]).apply(null,arguments)};var __get_tzname=Module["__get_tzname"]=function(){return(__get_tzname=Module["__get_tzname"]=Module["asm"]["Pa"]).apply(null,arguments)};var __get_daylight=Module["__get_daylight"]=function(){return(__get_daylight=Module["__get_daylight"]=Module["asm"]["Qa"]).apply(null,arguments)};var __get_timezone=Module["__get_timezone"]=function(){return(__get_timezone=Module["__get_timezone"]=Module["asm"]["Ra"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Sa"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Ta"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ua"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Va"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Wa"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Xa"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["Ya"]).apply(null,arguments)};var dynCall_jiii=Module["dynCall_jiii"]=function(){return(dynCall_jiii=Module["dynCall_jiii"]=Module["asm"]["Za"]).apply(null,arguments)};var dynCall_viij=Module["dynCall_viij"]=function(){return(dynCall_viij=Module["dynCall_viij"]=Module["asm"]["_a"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["$a"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["ab"]).apply(null,arguments)};function invoke_ii(index,a1){var sp=stackSave();try{return wasmTable.get(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{wasmTable.get(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return wasmTable.get(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{wasmTable.get(index)()}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{wasmTable.get(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return wasmTable.get(index)()}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2,a3){var sp=stackSave();try{dynCall_vij(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["callMain"]=callMain;Module["FS"]=FS;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;noExitRuntime=true;run(); + + + return silice;//.ready +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = silice; +else if (typeof define === 'function' && define['amd']) + define([], function() { return silice; }); +else if (typeof exports === 'object') + exports["silice"] = silice; diff --git a/src/worker/wasm/silice.wasm b/src/worker/wasm/silice.wasm new file mode 100755 index 0000000000000000000000000000000000000000..97d4e7250155f7328e140e2f0a6fed93329bb1d8 GIT binary patch literal 2099920 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

=vCsOigj?Xo7W#z4fTn7&i8?qlS!P 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
_MX#L_aqtp)&=@+IY3AHkj0ivP1V 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

{V%?EVBNM6l+zFqBJO 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

^l)@ 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

qw2Gf_jb(AM52 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