diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 00000000..848b21ef --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,23 @@ +RISVC contributors (sorted alphabetically) +============================================ + +* **[Cleisson Fernandes Da Silva](https://github.com/cleissom)** + + * SDRAM firts integration (first attempt) + +* **[Ian Schmiegelow Dannapel](https://github.com/Eximmius)** + + * VGA integration (internal SRAM) + +* **[Jeferson Cansi Pedroso](https://github.com/jefersonpedroso)** + + * MAX10 ADC integration + +* **[Lucas Seara Manoel](https://github.com/lsmanoel)** + + * [M] Instructions extension. + +* **[Marcos Vinicius Leal Da Silva](https://github.com/marcosleal)** + + * 9600 baud rate UART. + \ No newline at end of file diff --git a/alu/m/M.vhd b/alu/m/M.vhd new file mode 100644 index 00000000..d973d519 --- /dev/null +++ b/alu/m/M.vhd @@ -0,0 +1,54 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +use work.M_types.all; + +entity M is + port( + M_data : in M_data_t; + dataOut : out std_logic_vector(31 downto 0) + ); +end entity; + +architecture RTL of M is + ------------------------------------------------------------------- + + + signal mul_signed: Signed(63 downto 0); + signal mulu_unsigned: Unsigned(63 downto 0); + + signal div_signed: Signed(31 downto 0); + signal divu_unsigned: Unsigned(31 downto 0); + + signal rem_signed: Signed(31 downto 0); + signal remu_unsigned: Unsigned(31 downto 0); + +begin + --===============================================================-- + + mul_signed <= M_data.a*M_data.b; + mulu_unsigned <= Unsigned(M_data.a)*Unsigned(M_data.b); + + div_signed <= M_data.a/M_data.b; + divu_unsigned <= Unsigned(M_data.a)/Unsigned(M_data.b); + + rem_signed <= M_data.a mod M_data.b; + remu_unsigned <= Unsigned(M_data.a) mod Unsigned(M_data.b); + + ula_op : with M_data.code select + dataOut <= Std_logic_vector(mul_signed(31 downto 0)) when M_MUL, + Std_logic_vector(mul_signed(63 downto 32)) when M_MULH, + + Std_logic_vector(mulu_unsigned(63 downto 32)) when M_MULHU, + Std_logic_vector(mulu_unsigned(63 downto 32)) when M_MULHSU, + + Std_logic_vector(div_signed) when M_DIV, + Std_logic_vector(divu_unsigned) when M_DIVU, + + Std_logic_vector(rem_signed) when M_REM, + Std_logic_vector(remu_unsigned) when M_REMU, + + (others => '0') when others; + +end architecture; \ No newline at end of file diff --git a/alu/m/M_types.vhd b/alu/m/M_types.vhd new file mode 100644 index 00000000..59afabd7 --- /dev/null +++ b/alu/m/M_types.vhd @@ -0,0 +1,27 @@ +LIBRARY ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package M_types is + + --! Record for instruction decoding + type M_data_t is record + a : signed(31 downto 0); --! Source operand A + b : signed(31 downto 0); --! Source operand B + code : std_logic_vector(2 downto 0); --! Alu operation code + end record M_data_t; + + constant M_MUL: std_logic_vector(2 downto 0) := "000"; + constant M_MULH: std_logic_vector(2 downto 0) := "001"; + constant M_MULHU: std_logic_vector(2 downto 0) := "010"; + constant M_MULHSU: std_logic_vector(2 downto 0) := "011"; + constant M_DIV: std_logic_vector(2 downto 0) := "100"; + constant M_DIVU: std_logic_vector(2 downto 0) := "101"; + constant M_REM: std_logic_vector(2 downto 0) := "110"; + constant M_REMU: std_logic_vector(2 downto 0) := "111"; + +end package; + +package body M_types is + +end; diff --git a/alu/m/README.md b/alu/m/README.md new file mode 100644 index 00000000..57d35442 --- /dev/null +++ b/alu/m/README.md @@ -0,0 +1,74 @@ +# [“M” Standard Extension for Integer Multiplication and Division, Version 2.0](https://content.riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf#chapter.6) + +[RV32/64G Instruction Set Listings](https://content.riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf#chapter.19) + +![M word](./img/M_word.png) + +![RV32M Standard Extension](./img/rv32M_standard_extension.png) + +* MUL - **Signed\*Signed** 32 bits multiplication (rs1*rs2) - Place lower 32 bits in rd. +* MULH - **Signed\*Signed** 32 bits multiplication (rs1*rs2) - Place higher 32 bits in rd. +* MULHU - **Unsigned\*Unsigned** 32 bits multiplication (rs1*rs2) - Place higher 32 bits in rd. +* MULHSU - **Signed\*Unsigned** 32 bits multiplication (rs1*rs2) - Place higher 32 bits in rd. +* DIV - **Signed\*Signed** 32 bits division (rs1*rs2) - Place lower 32 bits in rd. +* DIVU - **Unsigned\*Unsigned** 32 bits division (rs1*rs2) - Place lower 32 bits in rd. +* REM - **Signed** remainder of the corresponding division operation +* REMU - **Unsigned** remainder of the corresponding division operation + +![RV32M Standard Extension](./img/M_unit.png) + +##Files to use M unit: + +* M_types.vhd +* M.vhd + +##Testbench: + +* tb_M.do - Modelsim +* tb_M.vhd + +##Code to Teste: +```C +#include "utils.h" +#include "hardware.h" +#include + +int main(){ + volatile int a_int32=3, b_int32=2; + volatile int a_int64=3, b_int64=2; + + volatile uint32_t a_uint32=INT_MAX, b_uint32=2; + volatile uint64_t a_uint64=INT_MAX, b_uint64=2; + + volatile uint64_t mul_result; + volatile uint32_t mulh_result; + volatile uint32_t mulhsu_result; + volatile uint32_t mulhu_result; + volatile int div_result; + volatile uint32_t divu_result; + volatile int rem_result; + volatile uint32_t remu_result; + + while (1){ + + + mul_result = a_uint32 * b_int32; + + mulh_result = a_int64*b_int64; + + mulhsu_result = a_uint64*b_uint64; + + mulh_result = a_int64*b_int64; + + div_result = a_int32/b_int32; + + divu_result = a_uint32/b_uint32; + + div_result = a_int32%b_int32; + + divu_result = a_uint32%b_uint32; + } + + return 0; +} +``` diff --git a/alu/m/img/M_unit.png b/alu/m/img/M_unit.png new file mode 100644 index 00000000..07244300 Binary files /dev/null and b/alu/m/img/M_unit.png differ diff --git a/alu/m/img/M_word.png b/alu/m/img/M_word.png new file mode 100644 index 00000000..c4d66987 Binary files /dev/null and b/alu/m/img/M_word.png differ diff --git a/alu/m/img/mul_machine_state.png b/alu/m/img/mul_machine_state.png new file mode 100644 index 00000000..f9b131a8 Binary files /dev/null and b/alu/m/img/mul_machine_state.png differ diff --git a/alu/m/img/rv32M_standard_extension.png b/alu/m/img/rv32M_standard_extension.png new file mode 100644 index 00000000..cff49cf5 Binary files /dev/null and b/alu/m/img/rv32M_standard_extension.png differ diff --git a/alu/m/tb_M.do b/alu/m/tb_M.do new file mode 100644 index 00000000..a04bee09 --- /dev/null +++ b/alu/m/tb_M.do @@ -0,0 +1,29 @@ +#Cria Biblioteca +vlib work + +#Compila Projeto +vcom M_types.vhd +vcom M.vhd +vcom tb_M.vhd + +#Simula +vsim -t ns work.tb_M + +#Mosta forma de onda +view wave + +#Adiciona ondas específicas +#radix: binary, hex, dec +#label: nome da forma de onda + +#------------------------------------------------------------------------------------------ +add wave -radix dec -label a_integer /a_integer +add wave -radix dec -label b_integer /b_integer +add wave -radix dec -label M_data_out_integer /M_data_out_integer +add wave -radix bin -label code_logic_vector /code_logic_vector + +#------------------------------------------------------------------------------------------ +run 100ns + +wave zoomfull +write wave wave.pss \ No newline at end of file diff --git a/alu/m/tb_M.vhd b/alu/m/tb_M.vhd new file mode 100644 index 00000000..fe27ef7a --- /dev/null +++ b/alu/m/tb_M.vhd @@ -0,0 +1,106 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +use work.M_types.all; + +entity tb_M is +end entity; + +architecture waveform of tb_M is + ------------------------------------------------------------------- + -- CLOCK + signal clock_50_0_logic, clock_50_PI_logic: std_logic; + + ------------------------------------------------------------------- + -- M + component M is + port( + M_DATA : in M_data_t; + DATAOUT : out std_logic_vector(31 downto 0) + ); + end component; + + -------------------------------------------------------------------- + -- A and B + signal a_integer: integer; + signal a_signed: signed (31 downto 0); + signal a_logic_vector: std_logic_vector (31 downto 0); + + signal b_integer: integer; + signal b_signed: signed (31 downto 0); + signal b_logic_vector: std_logic_vector (31 downto 0); + + -------------------------------------------------------------------- + -- code + signal code_logic_vector: std_logic_vector (2 downto 0); + + -------------------------------------------------------------------- + -- M_data + signal M_data_record: M_data_t; + + -------------------------------------------------------------------- + -- DATAOUT + signal M_data_out_integer: integer; + signal M_data_out_signed: signed(31 downto 0); + signal M_data_out_logic_vector: std_logic_vector(31 downto 0); + +begin + --===============================================================-- + -- M + M_vhd: M + port map( + M_DATA => M_data_record, + DATAOUT => M_data_out_logic_vector + ); + + --===============================================================-- + -- A and B + a_signed <= To_signed(a_integer, 32); + a_logic_vector <= Std_logic_vector(a_signed); + + b_signed <= To_signed(b_integer, 32); + b_logic_vector <= Std_logic_vector(b_signed); + + a_integer <= 7; + b_integer <= 3; + + --===============================================================-- + -- code + SET_CODE: process -- 50 MHz phase pi + begin + code_logic_vector <= "000"; + wait for 10 ns; + code_logic_vector <= "001"; + wait for 10 ns; + code_logic_vector <= "010"; + wait for 10 ns; + code_logic_vector <= "011"; + wait for 10 ns; + code_logic_vector <= "100"; + wait for 10 ns; + code_logic_vector <= "101"; + wait for 10 ns; + code_logic_vector <= "110"; + wait for 10 ns; + code_logic_vector <= "111"; + wait for 10 ns; + end process; + + + --===============================================================-- + -- M_data + M_data_record.a <= a_signed; + M_data_record.b <= b_signed; + M_data_record.code <= code_logic_vector; + + --===============================================================-- + -- DATAOUT + M_data_out_signed <= Signed(M_data_out_logic_vector); + M_data_out_integer <= To_integer(M_data_out_signed); + + --&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&-- + -- Code + M_data_record.code <= code_logic_vector; + +end architecture; \ No newline at end of file diff --git a/peripherals/README.md b/peripherals/README.md new file mode 100644 index 00000000..54d78531 --- /dev/null +++ b/peripherals/README.md @@ -0,0 +1 @@ +# Peripherals base folder diff --git a/peripherals/adc/README.md b/peripherals/adc/README.md new file mode 100644 index 00000000..0406eb5d --- /dev/null +++ b/peripherals/adc/README.md @@ -0,0 +1,41 @@ + + +DOCUMENTAÇÃO ADC E DISPLAY 7 SEGMENTOS DE-10LITE + + +1- O HARDWARE + + +A implementação do ADC trata-se de um bloco IP da Altera, é configurado pelo arquivo "adc_qsys.qsys" utilizando-se a ferramenta própria da Altera. +Maiores informações em https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/archives/ug-m10-adc-16.1.pdf + +No arquivo "Top-level Hierarchy", "de0_lite.vhd", pode-se observar a Instancia do Componente ADC bem como o Port Map e Sinais necessários para o seu funcionamento. + +No process "-- Output register" o softcore envia ao hardware o número do canal que deve ser lido o ADC e também o registrador com os dígitos separados em hexadecimal que devem ser enviados aos displays de 7 segmentos do kit. + +No process "-- Input register" envia-se o valor do ADC para o registrador de I/O do softcore, onde os 12 bits menos significativos do registrador de I/O recebe o valor bruto do ADC e os bits 12 a 15 recebem o número do canal cujo valor foi lido, conforme ilustrado abaixo: + + input_in(11 downto 0) <= adc_sample_data; + input_in(15 downto 12) <= cur_adc_ch(3 downto 0); + + +Também neste mesmo arquivo foi declarado os componentes "displays()" que são responsáveis por receber um dígito hexadecimal e codifiar para os respectivos displays de 7 segmentos presentes no Kit DE-10LITE. + + +2- SOFTWARE + +No arquivo "hardware.h" estão definidos os nomes e endereços dos registradores de I/O: + +INDATA_ADC -> recebe o valor do ADC e respectivo canal. +SEL_CH_ADC -> envia ao hardware o número do canal ADC a ser lido +OUT_SEGS -> envia os dvalores em hexadecimal aos displays de 7 segmentos. São 6 displays ordenados nos 24bits mais significativos. + + +No arquivo "hardware_ADC_7SEG.h" estão definidos uma estrutura de dados para armazenar o valor lido do ADC e seu respectivo canal, bem como a declaração das funções para ler o ADC e escrever nos displays de 7 segmentos. + + +3- Valor ADC. + +O valor lido do ADC é bruto, devendo-se fazer as devidas conversões de acordo com a conveniencia pretendida. +No exemplo do arquivo "firmware.c" o valor foi convertido em mV. + \ No newline at end of file diff --git a/peripherals/adc/adc.bsf b/peripherals/adc/adc.bsf new file mode 100644 index 00000000..2153e9ff --- /dev/null +++ b/peripherals/adc/adc.bsf @@ -0,0 +1,178 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 2018 Intel Corporation. All rights reserved. +Your use of Intel Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Intel Program License +Subscription Agreement, the Intel Quartus Prime License Agreement, +the Intel FPGA IP License Agreement, or other applicable license +agreement, including, without limitation, that your use is for +the sole purpose of programming logic devices manufactured by +Intel and sold by Intel or its authorized distributors. Please +refer to the applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 448 432) + (text "adc" (rect 214 -1 228 11)(font "Arial" (font_size 10))) + (text "inst" (rect 8 416 20 428)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "clock_clk" (rect 0 0 36 12)(font "Arial" (font_size 8))) + (text "clock_clk" (rect 4 61 58 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 192 72)(line_width 1)) + ) + (port + (pt 0 112) + (input) + (text "reset_sink_reset_n" (rect 0 0 77 12)(font "Arial" (font_size 8))) + (text "reset_sink_reset_n" (rect 4 101 112 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 192 112)(line_width 1)) + ) + (port + (pt 0 152) + (input) + (text "adc_pll_clock_clk" (rect 0 0 69 12)(font "Arial" (font_size 8))) + (text "adc_pll_clock_clk" (rect 4 141 106 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 192 152)(line_width 1)) + ) + (port + (pt 0 192) + (input) + (text "adc_pll_locked_export" (rect 0 0 88 12)(font "Arial" (font_size 8))) + (text "adc_pll_locked_export" (rect 4 181 130 192)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 192 192)(line_width 1)) + ) + (port + (pt 0 232) + (input) + (text "sequencer_csr_address" (rect 0 0 97 12)(font "Arial" (font_size 8))) + (text "sequencer_csr_address" (rect 4 221 130 232)(font "Arial" (font_size 8))) + (line (pt 0 232)(pt 192 232)(line_width 1)) + ) + (port + (pt 0 248) + (input) + (text "sequencer_csr_read" (rect 0 0 83 12)(font "Arial" (font_size 8))) + (text "sequencer_csr_read" (rect 4 237 112 248)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 192 248)(line_width 1)) + ) + (port + (pt 0 264) + (input) + (text "sequencer_csr_write" (rect 0 0 83 12)(font "Arial" (font_size 8))) + (text "sequencer_csr_write" (rect 4 253 118 264)(font "Arial" (font_size 8))) + (line (pt 0 264)(pt 192 264)(line_width 1)) + ) + (port + (pt 0 280) + (input) + (text "sequencer_csr_writedata[31..0]" (rect 0 0 123 12)(font "Arial" (font_size 8))) + (text "sequencer_csr_writedata[31..0]" (rect 4 269 184 280)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 192 280)(line_width 3)) + ) + (port + (pt 0 336) + (input) + (text "sample_store_csr_address[6..0]" (rect 0 0 130 12)(font "Arial" (font_size 8))) + (text "sample_store_csr_address[6..0]" (rect 4 325 184 336)(font "Arial" (font_size 8))) + (line (pt 0 336)(pt 192 336)(line_width 3)) + ) + (port + (pt 0 352) + (input) + (text "sample_store_csr_read" (rect 0 0 96 12)(font "Arial" (font_size 8))) + (text "sample_store_csr_read" (rect 4 341 130 352)(font "Arial" (font_size 8))) + (line (pt 0 352)(pt 192 352)(line_width 1)) + ) + (port + (pt 0 368) + (input) + (text "sample_store_csr_write" (rect 0 0 96 12)(font "Arial" (font_size 8))) + (text "sample_store_csr_write" (rect 4 357 136 368)(font "Arial" (font_size 8))) + (line (pt 0 368)(pt 192 368)(line_width 1)) + ) + (port + (pt 0 384) + (input) + (text "sample_store_csr_writedata[31..0]" (rect 0 0 136 12)(font "Arial" (font_size 8))) + (text "sample_store_csr_writedata[31..0]" (rect 4 373 202 384)(font "Arial" (font_size 8))) + (line (pt 0 384)(pt 192 384)(line_width 3)) + ) + (port + (pt 0 296) + (output) + (text "sequencer_csr_readdata[31..0]" (rect 0 0 123 12)(font "Arial" (font_size 8))) + (text "sequencer_csr_readdata[31..0]" (rect 4 285 178 296)(font "Arial" (font_size 8))) + (line (pt 0 296)(pt 192 296)(line_width 3)) + ) + (port + (pt 0 400) + (output) + (text "sample_store_csr_readdata[31..0]" (rect 0 0 136 12)(font "Arial" (font_size 8))) + (text "sample_store_csr_readdata[31..0]" (rect 4 389 196 400)(font "Arial" (font_size 8))) + (line (pt 0 400)(pt 192 400)(line_width 3)) + ) + (port + (pt 448 72) + (output) + (text "sample_store_irq_irq" (rect 0 0 84 12)(font "Arial" (font_size 8))) + (text "sample_store_irq_irq" (rect 342 61 462 72)(font "Arial" (font_size 8))) + (line (pt 448 72)(pt 256 72)(line_width 1)) + ) + (drawing + (text "clock" (rect 164 43 358 99)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 197 67 412 144)(font "Arial" (color 0 0 0))) + (text "reset_sink" (rect 131 83 322 179)(font "Arial" (color 128 0 0)(font_size 9))) + (text "reset_n" (rect 197 107 436 224)(font "Arial" (color 0 0 0))) + (text "adc_pll_clock" (rect 115 123 308 259)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 197 147 412 304)(font "Arial" (color 0 0 0))) + (text "adc_pll_locked" (rect 107 163 298 339)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 197 187 430 384)(font "Arial" (color 0 0 0))) + (text "sequencer_csr" (rect 107 203 292 419)(font "Arial" (color 128 0 0)(font_size 9))) + (text "address" (rect 197 227 436 464)(font "Arial" (color 0 0 0))) + (text "read" (rect 197 243 418 496)(font "Arial" (color 0 0 0))) + (text "write" (rect 197 259 424 528)(font "Arial" (color 0 0 0))) + (text "writedata" (rect 197 275 448 560)(font "Arial" (color 0 0 0))) + (text "readdata" (rect 197 291 442 592)(font "Arial" (color 0 0 0))) + (text "sample_store_csr" (rect 87 307 270 627)(font "Arial" (color 128 0 0)(font_size 9))) + (text "address" (rect 197 331 436 672)(font "Arial" (color 0 0 0))) + (text "read" (rect 197 347 418 704)(font "Arial" (color 0 0 0))) + (text "write" (rect 197 363 424 736)(font "Arial" (color 0 0 0))) + (text "writedata" (rect 197 379 448 768)(font "Arial" (color 0 0 0))) + (text "readdata" (rect 197 395 442 800)(font "Arial" (color 0 0 0))) + (text "sample_store_irq" (rect 257 43 610 99)(font "Arial" (color 128 0 0)(font_size 9))) + (text "irq" (rect 242 67 502 144)(font "Arial" (color 0 0 0))) + (text " system " (rect 413 416 874 842)(font "Arial" )) + (line (pt 192 32)(pt 256 32)(line_width 1)) + (line (pt 256 32)(pt 256 416)(line_width 1)) + (line (pt 192 416)(pt 256 416)(line_width 1)) + (line (pt 192 32)(pt 192 416)(line_width 1)) + (line (pt 193 52)(pt 193 76)(line_width 1)) + (line (pt 194 52)(pt 194 76)(line_width 1)) + (line (pt 193 92)(pt 193 116)(line_width 1)) + (line (pt 194 92)(pt 194 116)(line_width 1)) + (line (pt 193 132)(pt 193 156)(line_width 1)) + (line (pt 194 132)(pt 194 156)(line_width 1)) + (line (pt 193 172)(pt 193 196)(line_width 1)) + (line (pt 194 172)(pt 194 196)(line_width 1)) + (line (pt 193 212)(pt 193 300)(line_width 1)) + (line (pt 194 212)(pt 194 300)(line_width 1)) + (line (pt 193 316)(pt 193 404)(line_width 1)) + (line (pt 194 316)(pt 194 404)(line_width 1)) + (line (pt 255 52)(pt 255 76)(line_width 1)) + (line (pt 254 52)(pt 254 76)(line_width 1)) + (line (pt 0 0)(pt 448 0)(line_width 1)) + (line (pt 448 0)(pt 448 432)(line_width 1)) + (line (pt 0 432)(pt 448 432)(line_width 1)) + (line (pt 0 0)(pt 0 432)(line_width 1)) + ) +) diff --git a/peripherals/adc/adc.cmp b/peripherals/adc/adc.cmp new file mode 100644 index 00000000..9bc3c496 --- /dev/null +++ b/peripherals/adc/adc.cmp @@ -0,0 +1,20 @@ + component adc is + port ( + clock_clk : in std_logic := 'X'; -- clk + reset_sink_reset_n : in std_logic := 'X'; -- reset_n + adc_pll_clock_clk : in std_logic := 'X'; -- clk + adc_pll_locked_export : in std_logic := 'X'; -- export + sequencer_csr_address : in std_logic := 'X'; -- address + sequencer_csr_read : in std_logic := 'X'; -- read + sequencer_csr_write : in std_logic := 'X'; -- write + sequencer_csr_writedata : in std_logic_vector(31 downto 0) := (others => 'X'); -- writedata + sequencer_csr_readdata : out std_logic_vector(31 downto 0); -- readdata + sample_store_csr_address : in std_logic_vector(6 downto 0) := (others => 'X'); -- address + sample_store_csr_read : in std_logic := 'X'; -- read + sample_store_csr_write : in std_logic := 'X'; -- write + sample_store_csr_writedata : in std_logic_vector(31 downto 0) := (others => 'X'); -- writedata + sample_store_csr_readdata : out std_logic_vector(31 downto 0); -- readdata + sample_store_irq_irq : out std_logic -- irq + ); + end component adc; + diff --git a/peripherals/adc/adc.ppf b/peripherals/adc/adc.ppf new file mode 100644 index 00000000..9c1b6f4d --- /dev/null +++ b/peripherals/adc/adc.ppf @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/peripherals/adc/adc_bb.v b/peripherals/adc/adc_bb.v new file mode 100644 index 00000000..71c7fd47 --- /dev/null +++ b/peripherals/adc/adc_bb.v @@ -0,0 +1,34 @@ + +module adc ( + clock_clk, + reset_sink_reset_n, + adc_pll_clock_clk, + adc_pll_locked_export, + sequencer_csr_address, + sequencer_csr_read, + sequencer_csr_write, + sequencer_csr_writedata, + sequencer_csr_readdata, + sample_store_csr_address, + sample_store_csr_read, + sample_store_csr_write, + sample_store_csr_writedata, + sample_store_csr_readdata, + sample_store_irq_irq); + + input clock_clk; + input reset_sink_reset_n; + input adc_pll_clock_clk; + input adc_pll_locked_export; + input sequencer_csr_address; + input sequencer_csr_read; + input sequencer_csr_write; + input [31:0] sequencer_csr_writedata; + output [31:0] sequencer_csr_readdata; + input [6:0] sample_store_csr_address; + input sample_store_csr_read; + input sample_store_csr_write; + input [31:0] sample_store_csr_writedata; + output [31:0] sample_store_csr_readdata; + output sample_store_irq_irq; +endmodule diff --git a/peripherals/adc/adc_inst.v b/peripherals/adc/adc_inst.v new file mode 100644 index 00000000..15ce48b4 --- /dev/null +++ b/peripherals/adc/adc_inst.v @@ -0,0 +1,18 @@ + adc u0 ( + .clock_clk (), // clock.clk + .reset_sink_reset_n (), // reset_sink.reset_n + .adc_pll_clock_clk (), // adc_pll_clock.clk + .adc_pll_locked_export (), // adc_pll_locked.export + .sequencer_csr_address (), // sequencer_csr.address + .sequencer_csr_read (), // .read + .sequencer_csr_write (), // .write + .sequencer_csr_writedata (), // .writedata + .sequencer_csr_readdata (), // .readdata + .sample_store_csr_address (), // sample_store_csr.address + .sample_store_csr_read (), // .read + .sample_store_csr_write (), // .write + .sample_store_csr_writedata (), // .writedata + .sample_store_csr_readdata (), // .readdata + .sample_store_irq_irq () // sample_store_irq.irq + ); + diff --git a/peripherals/adc/adc_inst.vhd b/peripherals/adc/adc_inst.vhd new file mode 100644 index 00000000..44a688ad --- /dev/null +++ b/peripherals/adc/adc_inst.vhd @@ -0,0 +1,39 @@ + component adc is + port ( + clock_clk : in std_logic := 'X'; -- clk + reset_sink_reset_n : in std_logic := 'X'; -- reset_n + adc_pll_clock_clk : in std_logic := 'X'; -- clk + adc_pll_locked_export : in std_logic := 'X'; -- export + sequencer_csr_address : in std_logic := 'X'; -- address + sequencer_csr_read : in std_logic := 'X'; -- read + sequencer_csr_write : in std_logic := 'X'; -- write + sequencer_csr_writedata : in std_logic_vector(31 downto 0) := (others => 'X'); -- writedata + sequencer_csr_readdata : out std_logic_vector(31 downto 0); -- readdata + sample_store_csr_address : in std_logic_vector(6 downto 0) := (others => 'X'); -- address + sample_store_csr_read : in std_logic := 'X'; -- read + sample_store_csr_write : in std_logic := 'X'; -- write + sample_store_csr_writedata : in std_logic_vector(31 downto 0) := (others => 'X'); -- writedata + sample_store_csr_readdata : out std_logic_vector(31 downto 0); -- readdata + sample_store_irq_irq : out std_logic -- irq + ); + end component adc; + + u0 : component adc + port map ( + clock_clk => CONNECTED_TO_clock_clk, -- clock.clk + reset_sink_reset_n => CONNECTED_TO_reset_sink_reset_n, -- reset_sink.reset_n + adc_pll_clock_clk => CONNECTED_TO_adc_pll_clock_clk, -- adc_pll_clock.clk + adc_pll_locked_export => CONNECTED_TO_adc_pll_locked_export, -- adc_pll_locked.export + sequencer_csr_address => CONNECTED_TO_sequencer_csr_address, -- sequencer_csr.address + sequencer_csr_read => CONNECTED_TO_sequencer_csr_read, -- .read + sequencer_csr_write => CONNECTED_TO_sequencer_csr_write, -- .write + sequencer_csr_writedata => CONNECTED_TO_sequencer_csr_writedata, -- .writedata + sequencer_csr_readdata => CONNECTED_TO_sequencer_csr_readdata, -- .readdata + sample_store_csr_address => CONNECTED_TO_sample_store_csr_address, -- sample_store_csr.address + sample_store_csr_read => CONNECTED_TO_sample_store_csr_read, -- .read + sample_store_csr_write => CONNECTED_TO_sample_store_csr_write, -- .write + sample_store_csr_writedata => CONNECTED_TO_sample_store_csr_writedata, -- .writedata + sample_store_csr_readdata => CONNECTED_TO_sample_store_csr_readdata, -- .readdata + sample_store_irq_irq => CONNECTED_TO_sample_store_irq_irq -- sample_store_irq.irq + ); + diff --git a/peripherals/adc/adc_qsys.qsys b/peripherals/adc/adc_qsys.qsys new file mode 100644 index 00000000..8c1fb227 --- /dev/null +++ b/peripherals/adc/adc_qsys.qsys @@ -0,0 +1,511 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CT#PORT_clk5 PORT_UNUSED CT#PORT_clk4 PORT_UNUSED CT#PORT_clk3 PORT_UNUSED CT#PORT_clk2 PORT_UNUSED CT#PORT_clk1 PORT_USED CT#PORT_clk0 PORT_USED CT#CLK0_MULTIPLY_BY 1 CT#PORT_SCANWRITE PORT_UNUSED CT#PORT_SCANACLR PORT_UNUSED CT#PORT_PFDENA PORT_UNUSED CT#PORT_PLLENA PORT_UNUSED CT#PORT_SCANDATA PORT_UNUSED CT#PORT_SCANCLKENA PORT_UNUSED CT#WIDTH_CLOCK 5 CT#PORT_SCANDATAOUT PORT_UNUSED CT#LPM_TYPE altpll CT#PLL_TYPE AUTO CT#CLK0_PHASE_SHIFT 0 CT#CLK1_DUTY_CYCLE 50 CT#PORT_PHASEDONE PORT_UNUSED CT#OPERATION_MODE NORMAL CT#PORT_CONFIGUPDATE PORT_UNUSED CT#CLK1_MULTIPLY_BY 1 CT#COMPENSATE_CLOCK CLK0 CT#PORT_CLKSWITCH PORT_UNUSED CT#INCLK0_INPUT_FREQUENCY 20000 CT#PORT_SCANDONE PORT_UNUSED CT#PORT_CLKLOSS PORT_UNUSED CT#PORT_INCLK1 PORT_UNUSED CT#AVALON_USE_SEPARATE_SYSCLK NO CT#PORT_INCLK0 PORT_USED CT#PORT_clkena5 PORT_UNUSED CT#PORT_clkena4 PORT_UNUSED CT#PORT_clkena3 PORT_UNUSED CT#PORT_clkena2 PORT_UNUSED CT#PORT_clkena1 PORT_UNUSED CT#PORT_clkena0 PORT_UNUSED CT#CLK1_PHASE_SHIFT 0 CT#PORT_ARESET PORT_USED CT#BANDWIDTH_TYPE AUTO CT#INTENDED_DEVICE_FAMILY {MAX 10} CT#PORT_SCANREAD PORT_UNUSED CT#PORT_PHASESTEP PORT_UNUSED CT#PORT_SCANCLK PORT_UNUSED CT#PORT_CLKBAD1 PORT_UNUSED CT#PORT_CLKBAD0 PORT_UNUSED CT#PORT_FBIN PORT_UNUSED CT#PORT_PHASEUPDOWN PORT_UNUSED CT#PORT_extclk3 PORT_UNUSED CT#PORT_extclk2 PORT_UNUSED CT#PORT_extclk1 PORT_UNUSED CT#PORT_PHASECOUNTERSELECT PORT_UNUSED CT#PORT_extclk0 PORT_UNUSED CT#PORT_ACTIVECLOCK PORT_UNUSED CT#CLK0_DUTY_CYCLE 50 CT#CLK0_DIVIDE_BY 1 CT#CLK1_DIVIDE_BY 5 CT#PORT_LOCKED PORT_USED + altpll_avalon_elaboration + altpll_avalon_post_edit + IF#phasecounterselect {input 3} IF#locked {output 0} IF#reset {input 0} IF#clk {input 0} IF#phaseupdown {input 0} IF#scandone {output 0} IF#readdata {output 32} IF#write {input 0} IF#scanclk {input 0} IF#phasedone {output 0} IF#c4 {output 0} IF#c3 {output 0} IF#address {input 2} IF#c2 {output 0} IF#c1 {output 0} IF#c0 {output 0} IF#writedata {input 32} IF#read {input 0} IF#areset {input 0} IF#scanclkena {input 0} IF#scandataout {output 0} IF#configupdate {input 0} IF#phasestep {input 0} IF#scandata {input 0} + + IN#WIDTH_CLOCK 1 IN#CLK0_DUTY_CYCLE 1 IN#PLL_TARGET_HARCOPY_CHECK 1 IN#CLK1_MULTIPLY_BY 1 IN#SWITCHOVER_COUNT_EDIT 1 IN#INCLK0_INPUT_FREQUENCY 1 IN#PLL_LVDS_PLL_CHECK 1 IN#PLL_AUTOPLL_CHECK 1 IN#PLL_FASTPLL_CHECK 1 IN#CLK1_DUTY_CYCLE 1 IN#PLL_ENHPLL_CHECK 1 IN#DIV_FACTOR1 1 IN#DIV_FACTOR0 1 IN#LVDS_MODE_DATA_RATE_DIRTY 1 IN#GLOCK_COUNTER_EDIT 1 IN#CLK0_DIVIDE_BY 1 IN#MULT_FACTOR1 1 IN#MULT_FACTOR0 1 IN#CLK0_MULTIPLY_BY 1 IN#USE_MIL_SPEED_GRADE 1 IN#CLK1_DIVIDE_BY 1 + MF#areset 1 MF#clk 1 MF#locked 1 MF#inclk 1 + PT#GLOCKED_FEATURE_ENABLED 0 PT#SPREAD_FEATURE_ENABLED 0 PT#BANDWIDTH_FREQ_UNIT MHz PT#CUR_DEDICATED_CLK c0 PT#INCLK0_FREQ_EDIT 50.000 PT#BANDWIDTH_PRESET Low PT#PLL_LVDS_PLL_CHECK 0 PT#BANDWIDTH_USE_PRESET 0 PT#AVALON_USE_SEPARATE_SYSCLK NO PT#PLL_ENHPLL_CHECK 0 PT#OUTPUT_FREQ_UNIT1 MHz PT#OUTPUT_FREQ_UNIT0 MHz PT#PHASE_RECONFIG_FEATURE_ENABLED 1 PT#CREATE_CLKBAD_CHECK 0 PT#CLKSWITCH_CHECK 0 PT#INCLK1_FREQ_EDIT 100.000 PT#NORMAL_MODE_RADIO 1 PT#SRC_SYNCH_COMP_RADIO 0 PT#PLL_ARESET_CHECK 1 PT#LONG_SCAN_RADIO 1 PT#SCAN_FEATURE_ENABLED 1 PT#PHASE_RECONFIG_INPUTS_CHECK 0 PT#USE_CLK1 1 PT#USE_CLK0 1 PT#PRIMARY_CLK_COMBO inclk0 PT#BANDWIDTH 1.000 PT#GLOCKED_COUNTER_EDIT_CHANGED 1 PT#PLL_FASTPLL_CHECK 0 PT#SPREAD_FREQ_UNIT KHz PT#PLL_AUTOPLL_CHECK 1 PT#LVDS_PHASE_SHIFT_UNIT1 deg PT#LVDS_PHASE_SHIFT_UNIT0 deg PT#OUTPUT_FREQ_MODE1 1 PT#SWITCHOVER_FEATURE_ENABLED 0 PT#MIG_DEVICE_SPEED_GRADE Any PT#OUTPUT_FREQ_MODE0 1 PT#BANDWIDTH_FEATURE_ENABLED 1 PT#INCLK0_FREQ_UNIT_COMBO MHz PT#ZERO_DELAY_RADIO 0 PT#OUTPUT_FREQ1 10.00000000 PT#OUTPUT_FREQ0 50.00000000 PT#SHORT_SCAN_RADIO 0 PT#LVDS_MODE_DATA_RATE_DIRTY 0 PT#CUR_FBIN_CLK c0 PT#PLL_ADVANCED_PARAM_CHECK 0 PT#CLKBAD_SWITCHOVER_CHECK 0 PT#PHASE_SHIFT_STEP_ENABLED_CHECK 0 PT#DEVICE_SPEED_GRADE 7 PT#PLL_FBMIMIC_CHECK 0 PT#LVDS_MODE_DATA_RATE {Not Available} PT#LOCKED_OUTPUT_CHECK 1 PT#SPREAD_PERCENT 0.500 PT#PHASE_SHIFT1 0.00000000 PT#PHASE_SHIFT0 0.00000000 PT#DIV_FACTOR1 1 PT#DIV_FACTOR0 1 PT#CNX_NO_COMPENSATE_RADIO 0 PT#USE_CLKENA1 0 PT#USE_CLKENA0 0 PT#CREATE_INCLK1_CHECK 0 PT#GLOCK_COUNTER_EDIT 1048575 PT#INCLK1_FREQ_UNIT_COMBO MHz PT#EFF_OUTPUT_FREQ_VALUE1 10.000000 PT#EFF_OUTPUT_FREQ_VALUE0 50.000000 PT#SPREAD_FREQ 50.000 PT#USE_MIL_SPEED_GRADE 0 PT#EXPLICIT_SWITCHOVER_COUNTER 0 PT#STICKY_CLK1 1 PT#STICKY_CLK0 1 PT#EXT_FEEDBACK_RADIO 0 PT#MIRROR_CLK1 0 PT#MIRROR_CLK0 0 PT#SWITCHOVER_COUNT_EDIT 1 PT#SELF_RESET_LOCK_LOSS 0 PT#PLL_PFDENA_CHECK 0 PT#INT_FEEDBACK__MODE_RADIO 1 PT#INCLK1_FREQ_EDIT_CHANGED 1 PT#CLKLOSS_CHECK 0 PT#SYNTH_WRAPPER_GEN_POSTFIX 0 PT#PHASE_SHIFT_UNIT1 deg PT#PHASE_SHIFT_UNIT0 deg PT#BANDWIDTH_USE_AUTO 1 PT#HAS_MANUAL_SWITCHOVER 1 PT#MULT_FACTOR1 1 PT#MULT_FACTOR0 1 PT#SPREAD_USE 0 PT#GLOCKED_MODE_CHECK 0 PT#SACN_INPUTS_CHECK 0 PT#DUTY_CYCLE1 50.00000000 PT#INTENDED_DEVICE_FAMILY {MAX 10} PT#DUTY_CYCLE0 50.00000000 PT#PLL_TARGET_HARCOPY_CHECK 0 PT#INCLK1_FREQ_UNIT_CHANGED 1 PT#RECONFIG_FILE ALTPLL1413286123367447.mif PT#ACTIVECLK_CHECK 0 + UP#locked used UP#c1 used UP#c0 used UP#areset used UP#inclk0 used + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/peripherals/adc/adc_qsys.sopcinfo b/peripherals/adc/adc_qsys.sopcinfo new file mode 100644 index 00000000..924571ac --- /dev/null +++ b/peripherals/adc/adc_qsys.sopcinfo @@ -0,0 +1,5285 @@ + + + + + + + java.lang.Integer + 1561980330 + false + true + false + true + GENERATION_ID + + + java.lang.String + + false + true + false + true + UNIQUE_ID + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + java.lang.String + 10M50DAF484C7G + false + true + false + true + DEVICE + + + java.lang.String + 7 + false + true + false + true + DEVICE_SPEEDGRADE + + + java.lang.Long + -1 + false + true + false + true + CLOCK_RATE + clk + + + java.lang.Integer + -1 + false + true + false + true + CLOCK_DOMAIN + clk + + + java.lang.Integer + -1 + false + true + false + true + RESET_DOMAIN + clk + + + java.lang.String + MAX 10 + false + true + false + true + DEVICE_FAMILY + + + boolean + false + false + true + true + true + + + + + embeddedsw.CMacro.CORE_VARIANT + 3 + + + embeddedsw.CMacro.DUAL_ADC_MODE + false + + + embeddedsw.CMacro.IS_THIS_FIRST_OR_SECOND_ADC + 1 + + + embeddedsw.CMacro.PRESCALER_CH16 + 0 + + + embeddedsw.CMacro.PRESCALER_CH8 + 0 + + + embeddedsw.CMacro.REFSEL + External VREF + + + embeddedsw.CMacro.USE_CH0 + 0 + + + embeddedsw.CMacro.USE_CH1 + 1 + + + embeddedsw.CMacro.USE_CH10 + 1 + + + embeddedsw.CMacro.USE_CH11 + 1 + + + embeddedsw.CMacro.USE_CH12 + 1 + + + embeddedsw.CMacro.USE_CH13 + 1 + + + embeddedsw.CMacro.USE_CH14 + 1 + + + embeddedsw.CMacro.USE_CH15 + 1 + + + embeddedsw.CMacro.USE_CH16 + 1 + + + embeddedsw.CMacro.USE_CH2 + 1 + + + embeddedsw.CMacro.USE_CH3 + 1 + + + embeddedsw.CMacro.USE_CH4 + 1 + + + embeddedsw.CMacro.USE_CH5 + 1 + + + embeddedsw.CMacro.USE_CH6 + 1 + + + embeddedsw.CMacro.USE_CH7 + 0 + + + embeddedsw.CMacro.USE_CH8 + 0 + + + embeddedsw.CMacro.USE_CH9 + 1 + + + embeddedsw.CMacro.USE_TSD + 1 + + + embeddedsw.CMacro.VREF + 2.5 + + + embeddedsw.dts.compatible + altr,modular-adc-1.0 + + + embeddedsw.dts.group + adc + + + embeddedsw.dts.name + modular-adc + + + embeddedsw.dts.params.altr,adc-mode + 1 + + + embeddedsw.dts.params.altr,adc-number + 1 + + + embeddedsw.dts.params.altr,adc-slot-count + 8 + + + embeddedsw.dts.vendor + altr + + + int + 3 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 12 + false + true + false + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clock + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + java.lang.String + 10M50DAF484C7G + false + true + false + true + DEVICE + + + java.lang.String + 10M50 + true + true + false + true + + + int + 33 + true + true + false + true + + + int + 2 + true + true + false + true + + + int + 2 + true + true + false + true + + + int + 2 + true + true + false + true + + + int + 1 + false + true + true + true + + + int + 1 + true + true + false + true + + + java.math.BigInteger + 0 + true + true + false + true + + + int + 0 + true + true + false + true + + + int + 0 + false + true + true + true + + + int + 2 + false + true + true + true + + + int + 2 + true + true + false + true + + + int + 1 + true + true + false + true + + + int + 1 + false + true + false + true + + + int + 0 + false + true + true + true + + + double + 2.5 + false + true + true + true + + + double + 3.0 + false + true + false + true + + + double + 2.5 + true + true + false + true + + + double + 2.5 + true + true + false + true + + + int + 65536 + true + true + false + true + + + int + 0 + true + true + false + true + + + int + 0 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 125 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + boolean + false + false + true + true + true + + + double + 0.0 + false + true + false + true + + + java.lang.String + + false + true + true + true + + + int + 8 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 2 + false + true + false + true + + + int + 3 + false + true + false + true + + + int + 4 + false + true + false + true + + + int + 5 + false + true + false + true + + + int + 6 + false + true + false + true + + + int + 7 + false + true + false + true + + + int + 8 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + int + 30 + false + true + false + true + + + java.lang.String + 7 + false + true + false + true + DEVICE_SPEEDGRADE + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clock_clk + Input + 1 + clk + + + + + + java.lang.String + clock + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_sink_reset_n + Input + 1 + reset_n + + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + adc_pll_clock_clk + Input + 1 + clk + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + adc_pll_locked_export + Input + 1 + export + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset_sink + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 31 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + false + + command_valid + Input + 1 + valid + + + command_channel + Input + 5 + channel + + + command_startofpacket + Input + 1 + startofpacket + + + command_endofpacket + Input + 1 + endofpacket + + + command_ready + Output + 1 + ready + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset_sink + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 12 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 31 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + true + + response_valid + Output + 1 + valid + + + response_channel + Output + 5 + channel + + + response_data + Output + 12 + data + + + response_startofpacket + Output + 1 + startofpacket + + + response_endofpacket + Output + 1 + endofpacket + + + + + + + java.lang.String + altpll_avalon_elaboration + false + true + false + true + + + java.lang.String + altpll_avalon_post_edit + false + true + false + true + + + java.lang.String + MAX 10 + false + true + true + true + + + java.lang.String + 5 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 20000 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + NORMAL + false + true + true + true + + + java.lang.String + AUTO + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + CLK0 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + AUTO + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + 5 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 0 + false + true + true + true + + + java.lang.String + 0 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 50 + false + true + true + true + + + java.lang.String + 50 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + NO + false + true + true + true + + + java.lang.String + CT#PORT_clk5 PORT_UNUSED CT#PORT_clk4 PORT_UNUSED CT#PORT_clk3 PORT_UNUSED CT#PORT_clk2 PORT_UNUSED CT#PORT_clk1 PORT_USED CT#PORT_clk0 PORT_USED CT#CLK0_MULTIPLY_BY 1 CT#PORT_SCANWRITE PORT_UNUSED CT#PORT_SCANACLR PORT_UNUSED CT#PORT_PFDENA PORT_UNUSED CT#PORT_PLLENA PORT_UNUSED CT#PORT_SCANDATA PORT_UNUSED CT#PORT_SCANCLKENA PORT_UNUSED CT#WIDTH_CLOCK 5 CT#PORT_SCANDATAOUT PORT_UNUSED CT#LPM_TYPE altpll CT#PLL_TYPE AUTO CT#CLK0_PHASE_SHIFT 0 CT#CLK1_DUTY_CYCLE 50 CT#PORT_PHASEDONE PORT_UNUSED CT#OPERATION_MODE NORMAL CT#PORT_CONFIGUPDATE PORT_UNUSED CT#CLK1_MULTIPLY_BY 1 CT#COMPENSATE_CLOCK CLK0 CT#PORT_CLKSWITCH PORT_UNUSED CT#INCLK0_INPUT_FREQUENCY 20000 CT#PORT_SCANDONE PORT_UNUSED CT#PORT_CLKLOSS PORT_UNUSED CT#PORT_INCLK1 PORT_UNUSED CT#AVALON_USE_SEPARATE_SYSCLK NO CT#PORT_INCLK0 PORT_USED CT#PORT_clkena5 PORT_UNUSED CT#PORT_clkena4 PORT_UNUSED CT#PORT_clkena3 PORT_UNUSED CT#PORT_clkena2 PORT_UNUSED CT#PORT_clkena1 PORT_UNUSED CT#PORT_clkena0 PORT_UNUSED CT#CLK1_PHASE_SHIFT 0 CT#PORT_ARESET PORT_USED CT#BANDWIDTH_TYPE AUTO CT#INTENDED_DEVICE_FAMILY {MAX 10} CT#PORT_SCANREAD PORT_UNUSED CT#PORT_PHASESTEP PORT_UNUSED CT#PORT_SCANCLK PORT_UNUSED CT#PORT_CLKBAD1 PORT_UNUSED CT#PORT_CLKBAD0 PORT_UNUSED CT#PORT_FBIN PORT_UNUSED CT#PORT_PHASEUPDOWN PORT_UNUSED CT#PORT_extclk3 PORT_UNUSED CT#PORT_extclk2 PORT_UNUSED CT#PORT_extclk1 PORT_UNUSED CT#PORT_PHASECOUNTERSELECT PORT_UNUSED CT#PORT_extclk0 PORT_UNUSED CT#PORT_ACTIVECLOCK PORT_UNUSED CT#CLK0_DUTY_CYCLE 50 CT#CLK0_DIVIDE_BY 1 CT#CLK1_DIVIDE_BY 5 CT#PORT_LOCKED PORT_USED + false + true + false + true + + + java.lang.String + PT#GLOCKED_FEATURE_ENABLED 0 PT#SPREAD_FEATURE_ENABLED 0 PT#BANDWIDTH_FREQ_UNIT MHz PT#CUR_DEDICATED_CLK c0 PT#INCLK0_FREQ_EDIT 50.000 PT#BANDWIDTH_PRESET Low PT#PLL_LVDS_PLL_CHECK 0 PT#BANDWIDTH_USE_PRESET 0 PT#AVALON_USE_SEPARATE_SYSCLK NO PT#PLL_ENHPLL_CHECK 0 PT#OUTPUT_FREQ_UNIT1 MHz PT#OUTPUT_FREQ_UNIT0 MHz PT#PHASE_RECONFIG_FEATURE_ENABLED 1 PT#CREATE_CLKBAD_CHECK 0 PT#CLKSWITCH_CHECK 0 PT#INCLK1_FREQ_EDIT 100.000 PT#NORMAL_MODE_RADIO 1 PT#SRC_SYNCH_COMP_RADIO 0 PT#PLL_ARESET_CHECK 1 PT#LONG_SCAN_RADIO 1 PT#SCAN_FEATURE_ENABLED 1 PT#PHASE_RECONFIG_INPUTS_CHECK 0 PT#USE_CLK1 1 PT#USE_CLK0 1 PT#PRIMARY_CLK_COMBO inclk0 PT#BANDWIDTH 1.000 PT#GLOCKED_COUNTER_EDIT_CHANGED 1 PT#PLL_FASTPLL_CHECK 0 PT#SPREAD_FREQ_UNIT KHz PT#PLL_AUTOPLL_CHECK 1 PT#LVDS_PHASE_SHIFT_UNIT1 deg PT#LVDS_PHASE_SHIFT_UNIT0 deg PT#OUTPUT_FREQ_MODE1 1 PT#SWITCHOVER_FEATURE_ENABLED 0 PT#MIG_DEVICE_SPEED_GRADE Any PT#OUTPUT_FREQ_MODE0 1 PT#BANDWIDTH_FEATURE_ENABLED 1 PT#INCLK0_FREQ_UNIT_COMBO MHz PT#ZERO_DELAY_RADIO 0 PT#OUTPUT_FREQ1 10.00000000 PT#OUTPUT_FREQ0 50.00000000 PT#SHORT_SCAN_RADIO 0 PT#LVDS_MODE_DATA_RATE_DIRTY 0 PT#CUR_FBIN_CLK c0 PT#PLL_ADVANCED_PARAM_CHECK 0 PT#CLKBAD_SWITCHOVER_CHECK 0 PT#PHASE_SHIFT_STEP_ENABLED_CHECK 0 PT#DEVICE_SPEED_GRADE 7 PT#PLL_FBMIMIC_CHECK 0 PT#LVDS_MODE_DATA_RATE {Not Available} PT#LOCKED_OUTPUT_CHECK 1 PT#SPREAD_PERCENT 0.500 PT#PHASE_SHIFT1 0.00000000 PT#PHASE_SHIFT0 0.00000000 PT#DIV_FACTOR1 1 PT#DIV_FACTOR0 1 PT#CNX_NO_COMPENSATE_RADIO 0 PT#USE_CLKENA1 0 PT#USE_CLKENA0 0 PT#CREATE_INCLK1_CHECK 0 PT#GLOCK_COUNTER_EDIT 1048575 PT#INCLK1_FREQ_UNIT_COMBO MHz PT#EFF_OUTPUT_FREQ_VALUE1 10.000000 PT#EFF_OUTPUT_FREQ_VALUE0 50.000000 PT#SPREAD_FREQ 50.000 PT#USE_MIL_SPEED_GRADE 0 PT#EXPLICIT_SWITCHOVER_COUNTER 0 PT#STICKY_CLK1 1 PT#STICKY_CLK0 1 PT#EXT_FEEDBACK_RADIO 0 PT#MIRROR_CLK1 0 PT#MIRROR_CLK0 0 PT#SWITCHOVER_COUNT_EDIT 1 PT#SELF_RESET_LOCK_LOSS 0 PT#PLL_PFDENA_CHECK 0 PT#INT_FEEDBACK__MODE_RADIO 1 PT#INCLK1_FREQ_EDIT_CHANGED 1 PT#CLKLOSS_CHECK 0 PT#SYNTH_WRAPPER_GEN_POSTFIX 0 PT#PHASE_SHIFT_UNIT1 deg PT#PHASE_SHIFT_UNIT0 deg PT#BANDWIDTH_USE_AUTO 1 PT#HAS_MANUAL_SWITCHOVER 1 PT#MULT_FACTOR1 1 PT#MULT_FACTOR0 1 PT#SPREAD_USE 0 PT#GLOCKED_MODE_CHECK 0 PT#SACN_INPUTS_CHECK 0 PT#DUTY_CYCLE1 50.00000000 PT#INTENDED_DEVICE_FAMILY {MAX 10} PT#DUTY_CYCLE0 50.00000000 PT#PLL_TARGET_HARCOPY_CHECK 0 PT#INCLK1_FREQ_UNIT_CHANGED 1 PT#RECONFIG_FILE ALTPLL1413286123367447.mif PT#ACTIVECLK_CHECK 0 + false + true + false + true + + + java.lang.String + UP#locked used UP#c1 used UP#c0 used UP#areset used UP#inclk0 used + false + true + false + true + + + java.lang.String + IN#WIDTH_CLOCK 1 IN#CLK0_DUTY_CYCLE 1 IN#PLL_TARGET_HARCOPY_CHECK 1 IN#CLK1_MULTIPLY_BY 1 IN#SWITCHOVER_COUNT_EDIT 1 IN#INCLK0_INPUT_FREQUENCY 1 IN#PLL_LVDS_PLL_CHECK 1 IN#PLL_AUTOPLL_CHECK 1 IN#PLL_FASTPLL_CHECK 1 IN#CLK1_DUTY_CYCLE 1 IN#PLL_ENHPLL_CHECK 1 IN#DIV_FACTOR1 1 IN#DIV_FACTOR0 1 IN#LVDS_MODE_DATA_RATE_DIRTY 1 IN#GLOCK_COUNTER_EDIT 1 IN#CLK0_DIVIDE_BY 1 IN#MULT_FACTOR1 1 IN#MULT_FACTOR0 1 IN#CLK0_MULTIPLY_BY 1 IN#USE_MIL_SPEED_GRADE 1 IN#CLK1_DIVIDE_BY 1 + false + true + false + true + + + java.lang.String + MF#areset 1 MF#clk 1 MF#locked 1 MF#inclk 1 + false + true + false + true + + + java.lang.String + IF#phasecounterselect {input 3} IF#locked {output 0} IF#reset {input 0} IF#clk {input 0} IF#phaseupdown {input 0} IF#scandone {output 0} IF#readdata {output 32} IF#write {input 0} IF#scanclk {input 0} IF#phasedone {output 0} IF#c4 {output 0} IF#c3 {output 0} IF#address {input 2} IF#c2 {output 0} IF#c1 {output 0} IF#c0 {output 0} IF#writedata {input 32} IF#read {input 0} IF#areset {input 0} IF#scanclkena {input 0} IF#scandataout {output 0} IF#configupdate {input 0} IF#phasestep {input 0} IF#scandata {input 0} + false + true + false + true + + + java.lang.String + 0 + false + true + false + true + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + java.lang.Long + 50000000 + false + true + false + true + CLOCK_RATE + inclk_interface + + + java.lang.String + MAX 10 + false + true + false + true + DEVICE_FAMILY + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + inclk_interface + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset + Input + 1 + reset + + + + + + embeddedsw.configuration.isMemoryDevice + false + + + embeddedsw.configuration.isNonVolatileStorage + false + + + embeddedsw.configuration.isPrintableDevice + false + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 16 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + inclk_interface + false + true + true + true + + + java.lang.String + inclk_interface_reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + read + Input + 1 + read + + + write + Input + 1 + write + + + address + Input + 2 + address + + + readdata + Output + 32 + readdata + + + writedata + Input + 32 + writedata + + + + + + java.lang.String + + false + true + true + true + + + long + 50000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + c0 + Output + 1 + clk + + + false + adc_0 + clock + adc_0.clock + + + false + clock_bridge_sys + in_clk + clock_bridge_sys.in_clk + + + + + + java.lang.String + + false + true + true + true + + + long + 10000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + c1 + Output + 1 + clk + + + false + adc_0 + adc_pll_clock + adc_0.adc_pll_clock + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + areset + Input + 1 + export + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + locked + Output + 1 + export + + + + + + + long + 50000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + long + 0 + false + true + false + true + CLOCK_RATE + clk_in + + + com.altera.sopcmodel.reset.Reset$Edges + NONE + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + qsys.ui.export_name + clk + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + in_clk + Input + 1 + clk + + + + + + qsys.ui.export_name + reset + + + java.lang.String + + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + NONE + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + java.lang.String + clk_in + false + true + true + true + + + long + 50000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + true + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + clk_out + Output + 1 + clk + + + false + altpll_sys + inclk_interface + altpll_sys.inclk_interface + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + clk_in_reset + false + true + true + true + + + [Ljava.lang.String; + clk_in_reset + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + NONE + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + true + + reset_n_out + Output + 1 + reset_n + + + + + + + long + 50000000 + false + true + true + true + CLOCK_RATE + in_clk + + + long + 0 + false + true + true + true + + + int + 1 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + in_clk + Input + 1 + clk + + + + + + java.lang.String + in_clk + false + true + true + true + + + long + 50000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + out_clk + Output + 1 + clk + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_sys + c0 + adc_0 + clock + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_sys + c0 + clock_bridge_sys + in_clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_sys + c1 + adc_0 + adc_pll_clock + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + altpll_sys + inclk_interface + + + + com.altera.entityinterfaces.IPort + + false + true + true + true + + + int + 0 + false + true + true + true + + + com.altera.entityinterfaces.IPort + + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_sys + locked_conduit + adc_0 + adc_pll_locked + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + altpll_sys + inclk_interface_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + adc_0 + reset_sink + + + 1 + altera_modular_adc + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Modular ADC core Intel FPGA IP + 18.1 + + + 4 + clock_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Input + 18.1 + + + 2 + reset_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Input + 18.1 + + + 3 + conduit_end + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Conduit + 18.1 + + + 1 + avalon_streaming_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Streaming Sink + 18.1 + + + 1 + avalon_streaming_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Streaming Source + 18.1 + + + 1 + altpll + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + ALTPLL Intel FPGA IP + 18.1 + + + 1 + avalon_slave + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Slave + 18.1 + + + 3 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Output + 18.1 + + + 1 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Clock Source + 18.1 + + + 1 + clock_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Input + 18.1 + + + 1 + reset_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Input + 18.1 + + + 1 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Output + 18.1 + + + 1 + reset_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Output + 18.1 + + + 1 + altera_clock_bridge + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Clock Bridge + 18.1 + + + 4 + clock + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Clock Connection + 18.1 + + + 1 + conduit + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Conduit Connection + 18.1 + + + 2 + reset + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Reset Connection + 18.1 + + 18.1 625 + + diff --git a/peripherals/adc/de10_lite.vhd b/peripherals/adc/de10_lite.vhd new file mode 100644 index 00000000..3f48e8f4 --- /dev/null +++ b/peripherals/adc/de10_lite.vhd @@ -0,0 +1,381 @@ +------------------------------------------------------------------- +-- Name : de0_lite.vhd +-- Author : Renan Augusto Starke +-- Modified : Jeferson Pedroso +-- Version : 0.1 +-- Copyright : Departamento de Eletrônica, Florianópolis, IFSC +-- Description : riscV ADC example +------------------------------------------------------------------- +LIBRARY ieee; +USE IEEE.STD_LOGIC_1164.ALL; +use ieee.numeric_std.all; + +use work.decoder_types.all; + +entity de10_lite is + generic ( + --! Num of 32-bits memory words + IMEMORY_WORDS : integer := 1024; --!= 4K (1024 * 4) bytes + DMEMORY_WORDS : integer := 1024 --!= 2k (512 * 2) bytes + ); + + + port ( + ---------- CLOCK ---------- + ADC_CLK_10: in std_logic; + MAX10_CLK1_50: in std_logic; + MAX10_CLK2_50: in std_logic; + + ----------- SDRAM ------------ + DRAM_ADDR: out std_logic_vector (12 downto 0); + DRAM_BA: out std_logic_vector (1 downto 0); + DRAM_CAS_N: out std_logic; + DRAM_CKE: out std_logic; + DRAM_CLK: out std_logic; + DRAM_CS_N: out std_logic; + DRAM_DQ: inout std_logic_vector(15 downto 0); + DRAM_LDQM: out std_logic; + DRAM_RAS_N: out std_logic; + DRAM_UDQM: out std_logic; + DRAM_WE_N: out std_logic; + + ----------- SEG7 ------------ + HEX0: out std_logic_vector(7 downto 0); + HEX1: out std_logic_vector(7 downto 0); + HEX2: out std_logic_vector(7 downto 0); + HEX3: out std_logic_vector(7 downto 0); + HEX4: out std_logic_vector(7 downto 0); + HEX5: out std_logic_vector(7 downto 0); + + ----------- KEY ------------ + KEY: in std_logic_vector(1 downto 0); + + ----------- LED ------------ + LEDR: out std_logic_vector(9 downto 0); + + ----------- SW ------------ + SW: in std_logic_vector(9 downto 0); + + ----------- VGA ------------ + VGA_B: out std_logic_vector(3 downto 0); + VGA_G: out std_logic_vector(3 downto 0); + VGA_HS: out std_logic; + VGA_R: out std_logic_vector(3 downto 0); + VGA_VS: out std_logic; + + ----------- Accelerometer ------------ + GSENSOR_CS_N: out std_logic; + GSENSOR_INT: in std_logic_vector(2 downto 1); + GSENSOR_SCLK: out std_logic; + GSENSOR_SDI: inout std_logic; + GSENSOR_SDO: inout std_logic; + + ----------- Arduino ------------ + ARDUINO_IO: inout std_logic_vector(15 downto 0); + ARDUINO_RESET_N: inout std_logic + ); +end entity; + + + +architecture rtl of de10_lite is + + signal clk : std_logic; + signal rst : std_logic; + + -- Instruction bus signals + signal idata : std_logic_vector(31 downto 0); + signal iaddress : integer range 0 to IMEMORY_WORDS-1 := 0; + signal address : std_logic_vector (9 downto 0); + + -- Data bus signals + signal daddress : integer range 0 to DMEMORY_WORDS-1; + signal ddata_r : std_logic_vector(31 downto 0); + signal ddata_w : std_logic_vector(31 downto 0); + signal dmask : std_logic_vector(3 downto 0); + signal dcsel : std_logic_vector(1 downto 0); + signal d_we : std_logic := '0'; + + signal ddata_r_mem : std_logic_vector(31 downto 0); + signal d_rd : std_logic; + + -- I/O signals + signal input_in : std_logic_vector(31 downto 0); + + -- PLL signals + signal locked_sig : std_logic; + + -- CPU state signals + signal state : cpu_state_t; + + + --===================================================== + --DECLARACAO COMPONENTE ADC + ------------------------------------------------------- + -- qsys MAX10 ADC component + component adc_qsys is + port( + clk_clk : in std_logic := 'X'; -- clk + clock_bridge_sys_out_clk_clk : out std_logic; -- clk + modular_adc_0_command_valid : in std_logic := 'X'; -- valid + modular_adc_0_command_channel : in std_logic_vector(4 downto 0) := (others => 'X'); -- channel + modular_adc_0_command_startofpacket : in std_logic := 'X'; -- startofpacket + modular_adc_0_command_endofpacket : in std_logic := 'X'; -- endofpacket + modular_adc_0_command_ready : out std_logic; -- ready + modular_adc_0_response_valid : out std_logic; -- valid + modular_adc_0_response_channel : out std_logic_vector(4 downto 0); -- channel + modular_adc_0_response_data : out std_logic_vector(11 downto 0); -- data + modular_adc_0_response_startofpacket : out std_logic; -- startofpacket + modular_adc_0_response_endofpacket : out std_logic; -- endofpacket + reset_reset_n : in std_logic := 'X' -- reset_n + ); + end component adc_qsys; + + --===================================================== + --DECLARACAO DISPLAY COMPONENTE + ------------------------------------------------------- + + component display_dec is + port( + hex : in std_logic_vector(3 downto 0); + dot : in std_logic; + disp : out std_logic_vector(7 downto 0) + ); + end component display_dec; + + type displays_type is array (0 to 5) of std_logic_vector(3 downto 0); + type displays_out_type is array (0 to 5) of std_logic_vector(7 downto 0); + + signal displays : displays_type; + signal displays_out : displays_out_type; + + --======================================================= + --SINAIS PARA adc_max + --======================================================= + + signal adc_out_clk : std_logic; + signal command_valid : std_logic; + signal command_channel : std_logic_vector(4 downto 0); + signal command_startofpacket : std_logic; + signal command_endofpacket : std_logic; + signal command_ready : std_logic; + signal response_valid : std_logic; + signal response_channel : std_logic_vector(4 downto 0); + signal response_data : std_logic_vector(11 downto 0); + signal response_startofpacket : std_logic; + signal response_endofpacket : std_logic; + + signal adc_sample_data : std_logic_vector(11 downto 0); + signal cur_adc_ch : std_logic_vector(4 downto 0); + signal reset : std_logic; + signal reset_n : std_logic; + + +begin + + --======================================================= + --GENERATE DISPLAYS + --======================================================= + + hex_gen : for i in 0 to 5 generate + hex_dec : display_dec + port map( + hex => displays(i), + dot => '0', + disp => displays_out(i) + ); + end generate; + + HEX0 <= displays_out(0); + HEX1 <= displays_out(1); + HEX2 <= displays_out(2); + HEX3 <= displays_out(3); + HEX4 <= displays_out(4); + HEX5 <= displays_out(5); + + --===================================================== + --PORTMAP ADC + ------------------------------------------------------- + u0 : component adc_qsys + port map( + clk_clk => MAX10_CLK1_50, + clock_bridge_sys_out_clk_clk => adc_out_clk, + modular_adc_0_command_valid => command_valid, + modular_adc_0_command_channel => command_channel, + modular_adc_0_command_startofpacket => command_startofpacket, + modular_adc_0_command_endofpacket => command_endofpacket, + modular_adc_0_command_ready => command_ready, + modular_adc_0_response_valid => response_valid, + modular_adc_0_response_channel => response_channel, + modular_adc_0_response_data => response_data, + modular_adc_0_response_startofpacket => response_startofpacket, + modular_adc_0_response_endofpacket => response_endofpacket, + reset_reset_n => reset_n --reset_n + ); + + --===================================================== + command_startofpacket <= '1'; + command_endofpacket <= '1'; + command_valid <= '1'; + + reset <= SW(8); --sw(9) e reset do ADC + reset_n <= not reset; + LEDR(8) <= reset; + + --===================================================== + --process para ler adc + --===================================================== + + process(adc_out_clk, reset) --adc_out_clk + begin + if reset = '1' then + adc_sample_data <= (others => '0'); + cur_adc_ch <= (others => '0'); + else + if (rising_edge(adc_out_clk) and response_valid = '1') then --adc_out_clk + adc_sample_data <= response_data; + cur_adc_ch <= response_channel; + end if; + end if; + end process; + + --===================================================== + + pll_inst: entity work.pll_quartus + port map( + areset => '0', + inclk0 => MAX10_CLK1_50, + c0 => clk, + locked => locked_sig + ); + + rst <= SW(9); + + -- Dummy out signals + DRAM_DQ <= ddata_r(15 downto 0); + ARDUINO_IO <= ddata_r(31 downto 16); + LEDR(9) <= SW(9); + DRAM_ADDR(9 downto 0) <= address; + + -- IMem shoud be read from instruction and data buses + -- Not enough RAM ports for instruction bus, data bus and in-circuit programming + process(d_rd, dcsel, daddress, iaddress) + begin + if (d_rd = '1') and (dcsel = "00") then + address <= std_logic_vector(to_unsigned(daddress,10)); + else + address <= std_logic_vector(to_unsigned(iaddress,10)); + end if; + end process; + + -- 32-bits x 1024 words quartus RAM (dual port: portA -> riscV, portB -> In-System Mem Editor + iram_quartus_inst: entity work.iram_quartus + port map( + address => address, + byteena => "1111", + clock => clk, + data => (others => '0'), + wren => '0', + q => idata + ); + + -- Data Memory RAM + dmem: entity work.dmemory + generic map( + MEMORY_WORDS => DMEMORY_WORDS + ) + port map( + rst => rst, + clk => clk, + data => ddata_w, + address => daddress, + we => d_we, + csel => dcsel(0), + dmask => dmask, + q => ddata_r_mem + ); + + -- Adress space mux ((check sections.ld) -> Data chip select: + -- 0x00000 -> Instruction memory + -- 0x20000 -> Data memory + -- 0x40000 -> Input/Output generic address space + with dcsel select + ddata_r <= idata when "00", + ddata_r_mem when "01", + input_in when "10", + (others => '0') when others; + + -- Softcore instatiation + myRisc: entity work.core + generic map( + IMEMORY_WORDS => IMEMORY_WORDS, + DMEMORY_WORDS => DMEMORY_WORDS + ) + port map( + clk => clk, + rst => rst, + iaddress => iaddress, + idata => idata, + daddress => daddress, + ddata_r => ddata_r, + ddata_w => ddata_w, + d_we => d_we, + d_rd => d_rd, + dcsel => dcsel, + dmask => dmask, + state => state + ); + + -- Output register (Dummy LED blinky) + process(clk, rst) + begin + if rst = '1' then + LEDR(3 downto 0) <= (others => '0'); + + else + if rising_edge(clk) then + if (d_we = '1') and (dcsel = "10")then + -- ToDo: Simplify compartors + -- ToDo: Maybe use byte addressing? + -- x"01" (word addressing) is x"04" (byte addressing) + if to_unsigned(daddress, 32)(8 downto 0) = x"01" then -- LEDS + LEDR(7 downto 0) <= ddata_w(7 downto 0); + elsif to_unsigned(daddress, 32)(8 downto 0) = x"02" then --OUT_SEGS + displays(0) <= ddata_w(3 downto 0); + displays(1) <= ddata_w(7 downto 4); + displays(2) <= ddata_w(11 downto 8); + displays(3) <= ddata_w(15 downto 12); + displays(4) <= ddata_w(19 downto 16); + displays(5) <= ddata_w(23 downto 20); + + elsif to_unsigned(daddress, 32)(8 downto 0) = x"06" then --CH_ADC_FEED + + elsif to_unsigned(daddress, 32)(8 downto 0) = x"07" then --SEL_CH_ADC + command_channel <= ddata_w(4 downto 0); + + end if; + end if; + end if; + end if; + end process; + + + -- Input register + process(clk, rst) + begin + if rst = '1' then + input_in <= (others => '0'); + else + if rising_edge(clk) then + if (d_rd = '1') and (dcsel = "10") then +-- input_in(8 downto 0) <= SW(8 downto 0); + input_in(11 downto 0) <= adc_sample_data; + input_in(15 downto 12) <= cur_adc_ch(3 downto 0); + + end if; + end if; + end if; + end process; + + +end; diff --git a/peripherals/adc/pll/pll_quartus.cmp b/peripherals/adc/pll/pll_quartus.cmp new file mode 100644 index 00000000..9849212e --- /dev/null +++ b/peripherals/adc/pll/pll_quartus.cmp @@ -0,0 +1,25 @@ +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +component pll_quartus + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +end component; diff --git a/peripherals/adc/pll/pll_quartus.ppf b/peripherals/adc/pll/pll_quartus.ppf new file mode 100644 index 00000000..4d68e582 --- /dev/null +++ b/peripherals/adc/pll/pll_quartus.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/peripherals/adc/pll/pll_quartus.qip b/peripherals/adc/pll/pll_quartus.qip new file mode 100644 index 00000000..bfd6a0e7 --- /dev/null +++ b/peripherals/adc/pll/pll_quartus.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "18.1" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll_quartus.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll_quartus_inst.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll_quartus.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll_quartus.ppf"] diff --git a/peripherals/adc/pll/pll_quartus.vhd b/peripherals/adc/pll/pll_quartus.vhd new file mode 100644 index 00000000..61e5a753 --- /dev/null +++ b/peripherals/adc/pll/pll_quartus.vhd @@ -0,0 +1,399 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: pll_quartus.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY pll_quartus IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END pll_quartus; + + +ARCHITECTURE SYN OF pll_quartus IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire6_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire6_bv(0 DOWNTO 0) <= "0"; + sub_wire6 <= To_stdlogicvector(sub_wire6_bv); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + locked <= sub_wire3; + sub_wire4 <= inclk0; + sub_wire5 <= sub_wire6(0 DOWNTO 0) & sub_wire4; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 50, + clk0_duty_cycle => 50, + clk0_multiply_by => 1, + clk0_phase_shift => "0", + clk1_divide_by => 15625, + clk1_duty_cycle => 50, + clk1_multiply_by => 3, + clk1_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 20000, + intended_device_family => "MAX 10", + lpm_hint => "CBX_MODULE_PREFIX=pll_quartus", + lpm_type => "altpll", + operation_mode => "NORMAL", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_UNUSED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire5, + clk => sub_wire0, + locked => sub_wire3 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "50" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "1.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "0.009600" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "100.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "0.00960000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll_quartus.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK4 STRING "0" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "15625" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "3" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_quartus.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_quartus.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_quartus.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_quartus.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_quartus.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_quartus_inst.vhd TRUE +-- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/peripherals/adc/pll/pll_quartus_inst.vhd b/peripherals/adc/pll/pll_quartus_inst.vhd new file mode 100644 index 00000000..bee5a286 --- /dev/null +++ b/peripherals/adc/pll/pll_quartus_inst.vhd @@ -0,0 +1,7 @@ +pll_quartus_inst : pll_quartus PORT MAP ( + areset => areset_sig, + inclk0 => inclk0_sig, + c0 => c0_sig, + c1 => c1_sig, + locked => locked_sig + ); diff --git a/peripherals/adc/sint/de10_lite.ipregen.rpt b/peripherals/adc/sint/de10_lite.ipregen.rpt new file mode 100644 index 00000000..72188105 --- /dev/null +++ b/peripherals/adc/sint/de10_lite.ipregen.rpt @@ -0,0 +1,68 @@ +IP Upgrade report for de10_lite +Mon Jul 8 08:47:25 2019 +Quartus Prime Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. IP Upgrade Summary + 3. Successfully Upgraded IP Components + 4. IP Upgrade Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 2018 Intel Corporation. All rights reserved. +Your use of Intel Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Intel Program License +Subscription Agreement, the Intel Quartus Prime License Agreement, +the Intel FPGA IP License Agreement, or other applicable license +agreement, including, without limitation, that your use is for +the sole purpose of programming logic devices manufactured by +Intel and sold by Intel or its authorized distributors. Please +refer to the applicable agreement for further details. + + + ++--------------------------------------------------------------------------------+ +; IP Upgrade Summary ; ++------------------------------+-------------------------------------------------+ +; IP Components Upgrade Status ; Passed - Mon Jul 8 08:47:25 2019 ; +; Quartus Prime Version ; 18.1.0 Build 625 09/12/2018 SJ Standard Edition ; +; Revision Name ; de10_lite ; +; Top-level Entity Name ; de0_lite ; +; Family ; MAX 10 ; ++------------------------------+-------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Successfully Upgraded IP Components ; ++-------------+----------------+---------+------------------------+------------------------+------------------------+---------+ +; Entity Name ; Component Name ; Version ; Original Source File ; Generation File Path ; New Source File ; Message ; ++-------------+----------------+---------+------------------------+------------------------+------------------------+---------+ +; pll_quartus ; ALTPLL ; 17.1 ; ../pll/pll_quartus.qip ; ../pll/pll_quartus.vhd ; ../pll/pll_quartus.qip ; ; ++-------------+----------------+---------+------------------------+------------------------+------------------------+---------+ + + ++---------------------+ +; IP Upgrade Messages ; ++---------------------+ +Info (11902): Backing up file "../pll/pll_quartus.vhd" to "../pll/pll_quartus.BAK.vhd" +Info (11837): Started upgrading IP component ALTPLL with file "../pll/pll_quartus.vhd" +Info (11131): Completed upgrading IP component ALTPLL with file "../pll/pll_quartus.vhd" +Info (23030): Evaluation of Tcl script /home/xtarke/Data/Apps/intelFPGA/18.1/quartus/common/tcl/internal/ip_regen/ip_regen.tcl was successful +Info: Quartus Prime Shell was successful. 0 errors, 0 warnings + Info: Peak virtual memory: 1065 megabytes + Info: Processing ended: Mon Jul 8 08:47:25 2019 + Info: Elapsed time: 00:00:09 + Info: Total CPU time (on all processors): 00:00:28 + + diff --git a/peripherals/adc/sint/de10_lite.qpf b/peripherals/adc/sint/de10_lite.qpf new file mode 100644 index 00000000..2e37e9d1 --- /dev/null +++ b/peripherals/adc/sint/de10_lite.qpf @@ -0,0 +1,31 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2015 Altera Corporation. All rights reserved. +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, the Altera Quartus II License Agreement, +# the Altera MegaCore Function License Agreement, or other +# applicable license agreement, including, without limitation, +# that your use is for the sole purpose of programming logic +# devices manufactured by Altera and sold by Altera or its +# authorized distributors. Please refer to the applicable +# agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition +# Date created = 18:49:34 June 20, 2019 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "15.0" +DATE = "18:49:34 June 20, 2019" + +# Revisions + +PROJECT_REVISION = "de10_lite" diff --git a/peripherals/adc/sint/de10_lite.qsf b/peripherals/adc/sint/de10_lite.qsf new file mode 100644 index 00000000..ef9389b1 --- /dev/null +++ b/peripherals/adc/sint/de10_lite.qsf @@ -0,0 +1,235 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2015 Altera Corporation. All rights reserved. +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, the Altera Quartus II License Agreement, +# the Altera MegaCore Function License Agreement, or other +# applicable license agreement, including, without limitation, +# that your use is for the sole purpose of programming logic +# devices manufactured by Altera and sold by Altera or its +# authorized distributors. Please refer to the applicable +# agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition +# Date created = 18:49:34 June 20, 2019 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# de10_lite_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "MAX 10" +set_global_assignment -name DEVICE 10M50DAF484C7G +set_global_assignment -name TOP_LEVEL_ENTITY de10_lite +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.0.0 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "18:49:34 JUNE 20, 2019" +set_global_assignment -name LAST_QUARTUS_VERSION "18.1.0 Standard Edition" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 +set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)" +set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name ENABLE_OCT_DONE ON +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 00000000 +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "SINGLE IMAGE WITH ERAM" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall +set_location_assignment PIN_N5 -to ADC_CLK_10 +set_location_assignment PIN_P11 -to MAX10_CLK1_50 +set_location_assignment PIN_N14 -to MAX10_CLK2_50 +set_location_assignment PIN_U17 -to DRAM_ADDR[0] +set_location_assignment PIN_W19 -to DRAM_ADDR[1] +set_location_assignment PIN_V18 -to DRAM_ADDR[2] +set_location_assignment PIN_U18 -to DRAM_ADDR[3] +set_location_assignment PIN_U19 -to DRAM_ADDR[4] +set_location_assignment PIN_T18 -to DRAM_ADDR[5] +set_location_assignment PIN_T19 -to DRAM_ADDR[6] +set_location_assignment PIN_R18 -to DRAM_ADDR[7] +set_location_assignment PIN_P18 -to DRAM_ADDR[8] +set_location_assignment PIN_P19 -to DRAM_ADDR[9] +set_location_assignment PIN_T20 -to DRAM_ADDR[10] +set_location_assignment PIN_P20 -to DRAM_ADDR[11] +set_location_assignment PIN_R20 -to DRAM_ADDR[12] +set_location_assignment PIN_T21 -to DRAM_BA[0] +set_location_assignment PIN_T22 -to DRAM_BA[1] +set_location_assignment PIN_U21 -to DRAM_CAS_N +set_location_assignment PIN_N22 -to DRAM_CKE +set_location_assignment PIN_L14 -to DRAM_CLK +set_location_assignment PIN_U20 -to DRAM_CS_N +set_location_assignment PIN_Y21 -to DRAM_DQ[0] +set_location_assignment PIN_Y20 -to DRAM_DQ[1] +set_location_assignment PIN_AA22 -to DRAM_DQ[2] +set_location_assignment PIN_AA21 -to DRAM_DQ[3] +set_location_assignment PIN_Y22 -to DRAM_DQ[4] +set_location_assignment PIN_W22 -to DRAM_DQ[5] +set_location_assignment PIN_W20 -to DRAM_DQ[6] +set_location_assignment PIN_V21 -to DRAM_DQ[7] +set_location_assignment PIN_P21 -to DRAM_DQ[8] +set_location_assignment PIN_J22 -to DRAM_DQ[9] +set_location_assignment PIN_H21 -to DRAM_DQ[10] +set_location_assignment PIN_H22 -to DRAM_DQ[11] +set_location_assignment PIN_G22 -to DRAM_DQ[12] +set_location_assignment PIN_G20 -to DRAM_DQ[13] +set_location_assignment PIN_G19 -to DRAM_DQ[14] +set_location_assignment PIN_F22 -to DRAM_DQ[15] +set_location_assignment PIN_V22 -to DRAM_LDQM +set_location_assignment PIN_U22 -to DRAM_RAS_N +set_location_assignment PIN_J21 -to DRAM_UDQM +set_location_assignment PIN_V20 -to DRAM_WE_N +set_location_assignment PIN_C14 -to HEX0[0] +set_location_assignment PIN_E15 -to HEX0[1] +set_location_assignment PIN_C15 -to HEX0[2] +set_location_assignment PIN_C16 -to HEX0[3] +set_location_assignment PIN_E16 -to HEX0[4] +set_location_assignment PIN_D17 -to HEX0[5] +set_location_assignment PIN_C17 -to HEX0[6] +set_location_assignment PIN_D15 -to HEX0[7] +set_location_assignment PIN_C18 -to HEX1[0] +set_location_assignment PIN_D18 -to HEX1[1] +set_location_assignment PIN_E18 -to HEX1[2] +set_location_assignment PIN_B16 -to HEX1[3] +set_location_assignment PIN_A17 -to HEX1[4] +set_location_assignment PIN_A18 -to HEX1[5] +set_location_assignment PIN_B17 -to HEX1[6] +set_location_assignment PIN_A16 -to HEX1[7] +set_location_assignment PIN_B20 -to HEX2[0] +set_location_assignment PIN_A20 -to HEX2[1] +set_location_assignment PIN_B19 -to HEX2[2] +set_location_assignment PIN_A21 -to HEX2[3] +set_location_assignment PIN_B21 -to HEX2[4] +set_location_assignment PIN_C22 -to HEX2[5] +set_location_assignment PIN_B22 -to HEX2[6] +set_location_assignment PIN_A19 -to HEX2[7] +set_location_assignment PIN_F21 -to HEX3[0] +set_location_assignment PIN_E22 -to HEX3[1] +set_location_assignment PIN_E21 -to HEX3[2] +set_location_assignment PIN_C19 -to HEX3[3] +set_location_assignment PIN_C20 -to HEX3[4] +set_location_assignment PIN_D19 -to HEX3[5] +set_location_assignment PIN_E17 -to HEX3[6] +set_location_assignment PIN_D22 -to HEX3[7] +set_location_assignment PIN_F18 -to HEX4[0] +set_location_assignment PIN_E20 -to HEX4[1] +set_location_assignment PIN_E19 -to HEX4[2] +set_location_assignment PIN_J18 -to HEX4[3] +set_location_assignment PIN_H19 -to HEX4[4] +set_location_assignment PIN_F19 -to HEX4[5] +set_location_assignment PIN_F20 -to HEX4[6] +set_location_assignment PIN_F17 -to HEX4[7] +set_location_assignment PIN_J20 -to HEX5[0] +set_location_assignment PIN_K20 -to HEX5[1] +set_location_assignment PIN_L18 -to HEX5[2] +set_location_assignment PIN_N18 -to HEX5[3] +set_location_assignment PIN_M20 -to HEX5[4] +set_location_assignment PIN_N19 -to HEX5[5] +set_location_assignment PIN_N20 -to HEX5[6] +set_location_assignment PIN_L19 -to HEX5[7] +set_location_assignment PIN_B8 -to KEY[0] +set_location_assignment PIN_A7 -to KEY[1] +set_location_assignment PIN_A8 -to LEDR[0] +set_location_assignment PIN_A9 -to LEDR[1] +set_location_assignment PIN_A10 -to LEDR[2] +set_location_assignment PIN_B10 -to LEDR[3] +set_location_assignment PIN_D13 -to LEDR[4] +set_location_assignment PIN_C13 -to LEDR[5] +set_location_assignment PIN_E14 -to LEDR[6] +set_location_assignment PIN_D14 -to LEDR[7] +set_location_assignment PIN_A11 -to LEDR[8] +set_location_assignment PIN_B11 -to LEDR[9] +set_location_assignment PIN_C10 -to SW[0] +set_location_assignment PIN_C11 -to SW[1] +set_location_assignment PIN_D12 -to SW[2] +set_location_assignment PIN_C12 -to SW[3] +set_location_assignment PIN_A12 -to SW[4] +set_location_assignment PIN_B12 -to SW[5] +set_location_assignment PIN_A13 -to SW[6] +set_location_assignment PIN_A14 -to SW[7] +set_location_assignment PIN_B14 -to SW[8] +set_location_assignment PIN_F15 -to SW[9] +set_location_assignment PIN_P1 -to VGA_B[0] +set_location_assignment PIN_T1 -to VGA_B[1] +set_location_assignment PIN_P4 -to VGA_B[2] +set_location_assignment PIN_N2 -to VGA_B[3] +set_location_assignment PIN_W1 -to VGA_G[0] +set_location_assignment PIN_T2 -to VGA_G[1] +set_location_assignment PIN_R2 -to VGA_G[2] +set_location_assignment PIN_R1 -to VGA_G[3] +set_location_assignment PIN_N3 -to VGA_HS +set_location_assignment PIN_AA1 -to VGA_R[0] +set_location_assignment PIN_V1 -to VGA_R[1] +set_location_assignment PIN_Y2 -to VGA_R[2] +set_location_assignment PIN_Y1 -to VGA_R[3] +set_location_assignment PIN_N1 -to VGA_VS +set_location_assignment PIN_AB16 -to GSENSOR_CS_N +set_location_assignment PIN_Y14 -to GSENSOR_INT[1] +set_location_assignment PIN_Y13 -to GSENSOR_INT[2] +set_location_assignment PIN_AB15 -to GSENSOR_SCLK +set_location_assignment PIN_V11 -to GSENSOR_SDI +set_location_assignment PIN_V12 -to GSENSOR_SDO +set_location_assignment PIN_AB5 -to ARDUINO_IO[0] +set_location_assignment PIN_AB6 -to ARDUINO_IO[1] +set_location_assignment PIN_AB7 -to ARDUINO_IO[2] +set_location_assignment PIN_AB8 -to ARDUINO_IO[3] +set_location_assignment PIN_AB9 -to ARDUINO_IO[4] +set_location_assignment PIN_Y10 -to ARDUINO_IO[5] +set_location_assignment PIN_AA11 -to ARDUINO_IO[6] +set_location_assignment PIN_AA12 -to ARDUINO_IO[7] +set_location_assignment PIN_AB17 -to ARDUINO_IO[8] +set_location_assignment PIN_AA17 -to ARDUINO_IO[9] +set_location_assignment PIN_AB19 -to ARDUINO_IO[10] +set_location_assignment PIN_AA19 -to ARDUINO_IO[11] +set_location_assignment PIN_Y19 -to ARDUINO_IO[12] +set_location_assignment PIN_AB20 -to ARDUINO_IO[13] +set_location_assignment PIN_AB21 -to ARDUINO_IO[14] +set_location_assignment PIN_AA20 -to ARDUINO_IO[15] +set_location_assignment PIN_F16 -to ARDUINO_RESET_N +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V" +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name QSYS_FILE ../adc_qsys.qsys +set_global_assignment -name VHDL_FILE ../../disp7seg/display_dec.vhd +set_global_assignment -name SDC_FILE de10_lite.sdc +set_global_assignment -name VHDL_FILE ../uart.vhd +set_global_assignment -name QIP_FILE ../pll/pll_quartus.qip +set_global_assignment -name VHDL_FILE ../../../alu/alu_types.vhd +set_global_assignment -name VHDL_FILE ../../../alu/alu.vhd +set_global_assignment -name VHDL_FILE ../de10_lite.vhd +set_global_assignment -name VHDL_FILE ../../../alu/m/M_types.vhd +set_global_assignment -name VHDL_FILE ../../../alu/m/M.vhd +set_global_assignment -name VHDL_FILE ../../../memory/dmemory.vhd +set_global_assignment -name VHDL_FILE ../../../memory/iram_quartus.vhd +set_global_assignment -name QIP_FILE ../../../memory/iram_quartus.qip +set_global_assignment -name VHDL_FILE ../../../decoder/iregister.vhd +set_global_assignment -name VHDL_FILE ../../../decoder/decoder_types.vhd +set_global_assignment -name VHDL_FILE ../../../decoder/decoder.vhd +set_global_assignment -name VHDL_FILE ../../../core/core.vhd +set_global_assignment -name VHDL_FILE ../../../registers/register_file.vhd + +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/peripherals/adc/sint/de10_lite.sdc b/peripherals/adc/sint/de10_lite.sdc new file mode 100644 index 00000000..7267c16e --- /dev/null +++ b/peripherals/adc/sint/de10_lite.sdc @@ -0,0 +1,86 @@ +#************************************************************** +# This .sdc file is created by Terasic Tool. +# Users are recommended to modify this file to match users logic. +#************************************************************** + +#************************************************************** +# Create Clock +#************************************************************** +create_clock -period "10.0 MHz" [get_ports ADC_CLK_10] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK1_50] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK2_50] + +#************************************************************** +# Create Generated Clock +#************************************************************** +derive_pll_clocks + + + +#************************************************************** +# Set Clock Latency +#************************************************************** + + + +#************************************************************** +# Set Clock Uncertainty +#************************************************************** +derive_clock_uncertainty + + + +#************************************************************** +# Set Input Delay +#************************************************************** + + + +#************************************************************** +# Set Output Delay +#************************************************************** + + + +#************************************************************** +# Set Clock Groups +#************************************************************** + + + +#************************************************************** +# Set False Path +#************************************************************** + + + +#************************************************************** +# Set Multicycle Path +#************************************************************** + + + +#************************************************************** +# Set Maximum Delay +#************************************************************** + + + +#************************************************************** +# Set Minimum Delay +#************************************************************** + + + +#************************************************************** +# Set Input Transition +#************************************************************** + + + +#************************************************************** +# Set Load +#************************************************************** + + + diff --git a/peripherals/adc/sint/de10_lite_assignment_defaults.qdf b/peripherals/adc/sint/de10_lite_assignment_defaults.qdf new file mode 100644 index 00000000..d40b50e3 --- /dev/null +++ b/peripherals/adc/sint/de10_lite_assignment_defaults.qdf @@ -0,0 +1,807 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2018 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Intel Program License +# Subscription Agreement, the Intel Quartus Prime License Agreement, +# the Intel FPGA IP License Agreement, or other applicable license +# agreement, including, without limitation, that your use is for +# the sole purpose of programming logic devices manufactured by +# Intel and sold by Intel or its authorized distributors. Please +# refer to the applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition +# Date created = 08:39:22 July 08, 2019 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus Prime software and is used +# to preserve global assignments across Quartus Prime versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name IP_COMPONENT_REPORT_HIERARCHY Off +set_global_assignment -name IP_COMPONENT_INTERNAL Off +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_POWER_ANALYZER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name FLOW_ENABLE_PARALLEL_MODULES On +set_global_assignment -name ENABLE_COMPACT_REPORT_TABLE Off +set_global_assignment -name REVISION_TYPE Base -family "Arria V" +set_global_assignment -name REVISION_TYPE Base -family "Stratix V" +set_global_assignment -name REVISION_TYPE Base -family "Arria V GZ" +set_global_assignment -name REVISION_TYPE Base -family "Cyclone V" +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name TDC_AGGRESSIVE_HOLD_CLOSURE_EFFORT Off +set_global_assignment -name ENABLE_HPS_INTERNAL_TIMING Off +set_global_assignment -name EMIF_SOC_PHYCLK_ADVANCE_MODELING Off +set_global_assignment -name USE_DLL_FREQUENCY_FOR_DQS_DELAY_CHAIN Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name TIMING_ANALYZER_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS On +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_DO_REPORT_TIMING Off +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_REPORT_NUM_WORST_CASE_TIMING_PATHS 100 +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone V" +set_global_assignment -name OPTIMIZATION_MODE Balanced +set_global_assignment -name ALLOW_REGISTER_MERGING On +set_global_assignment -name ALLOW_REGISTER_DUPLICATION On +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Cyclone 10 LP" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix IV" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV E" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Arria 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX II" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone V" +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name MLAB_ADD_TIMING_CONSTRAINTS_FOR_MIXED_PORT_FEED_THROUGH_MODE_SETTING_DONT_CARE Off +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name OCP_HW_EVAL -value OFF +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name FAMILY -value "Cyclone V" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name INFER_RAMS_FROM_RAW_LOGIC On +set_global_assignment -name PARALLEL_SYNTHESIS On +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name ALLOW_SHIFT_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "MAX 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix IV" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV E" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GX" +set_global_assignment -name REPORT_PARAMETER_SETTINGS On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS On +set_global_assignment -name REPORT_CONNECTIVITY_CHECKS On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone 10 LP" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV E" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix IV" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX II" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Cyclone V" +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_PROTECTED_REGISTERS_REPORTED 100 +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 5000 +set_global_assignment -name NUMBER_OF_SYNTHESIS_MIGRATION_ROWS 5000 +set_global_assignment -name SYNTHESIS_S10_MIGRATION_CHECKS Off +set_global_assignment -name NUMBER_OF_SWEPT_NODES_REPORTED 5000 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name DISABLE_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "MAX 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix IV" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV E" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GX" +set_global_assignment -name MAX_LABS "-1 (Unlimited)" +set_global_assignment -name RBCGEN_CRITICAL_WARNING_TO_ERROR On +set_global_assignment -name MAX_NUMBER_OF_REGISTERS_FROM_UNINFERRED_RAMS "-1 (Unlimited)" +set_global_assignment -name AUTO_PARALLEL_SYNTHESIS On +set_global_assignment -name PRPOF_ID Off +set_global_assignment -name DISABLE_DSP_NEGATE_INFERENCING Off +set_global_assignment -name REPORT_PARAMETER_SETTINGS_PRO On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS_PRO On +set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE Off +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name TXPMA_SLEW_RATE Low +set_global_assignment -name ADCE_ENABLED Auto +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS Off +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name PHYSICAL_SYNTHESIS Off +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name ENABLE_NCEO_OUTPUT Off +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "Single Image" +set_global_assignment -name CVP_MODE Off +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria 10" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Stratix V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V GZ" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Cyclone V" +set_global_assignment -name VID_OPERATION_MODE "PMBus Slave" +set_global_assignment -name USE_CONF_DONE AUTO +set_global_assignment -name USE_PWRMGT_SCL AUTO +set_global_assignment -name USE_PWRMGT_SDA AUTO +set_global_assignment -name USE_PWRMGT_ALERT AUTO +set_global_assignment -name USE_INIT_DONE AUTO +set_global_assignment -name USE_CVP_CONFDONE AUTO +set_global_assignment -name USE_SEU_ERROR AUTO +set_global_assignment -name RESERVE_AVST_CLK_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_VALID_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA15_THROUGH_DATA0_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name MAX10FPGA_CONFIGURATION_SCHEME "Internal Configuration" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_UNUSED_RX_CLOCK_WORKAROUND Off +set_global_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL Off +set_global_assignment -name IGNORE_HSSI_COLUMN_POWER_WHEN_PRESERVING_UNUSED_XCVR_CHANNELS On +set_global_assignment -name AUTO_RESERVE_CLKUSR_FOR_CALIBRATION On +set_global_assignment -name DEVICE_INITIALIZATION_CLOCK INIT_INTOSC +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name INIT_DONE_OPEN_DRAIN On +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA15_THROUGH_DATA8_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA5_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name ENABLE_CONFIGURATION_PINS On +set_global_assignment -name ENABLE_JTAG_PIN_SHARING Off +set_global_assignment -name ENABLE_NCE_PIN Off +set_global_assignment -name ENABLE_BOOT_SEL_PIN On +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name INTERNAL_SCRUBBING Off +set_global_assignment -name PR_ERROR_OPEN_DRAIN On +set_global_assignment -name PR_READY_OPEN_DRAIN On +set_global_assignment -name ENABLE_CVP_CONFDONE Off +set_global_assignment -name CVP_CONFDONE_OPEN_DRAIN On +set_global_assignment -name ENABLE_NCONFIG_FROM_CORE On +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "MAX 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "MAX 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix IV" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX II" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone V" +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix IV" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria 10" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix V" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria V GZ" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING Normal +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name PERIPHERY_TO_CORE_PLACEMENT_AND_ROUTING_OPTIMIZATION OFF +set_global_assignment -name RESERVE_ROUTING_OUTPUT_FLEXIBILITY Off +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name QII_AUTO_PACKED_REGISTERS Auto +set_global_assignment -name AUTO_PACKED_REGISTERS_MAX Auto +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone 10 LP" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix IV" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV E" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX II" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone V" +set_global_assignment -name AUTO_DELAY_CHAINS_FOR_HIGH_FANOUT_INPUT_PINS OFF +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION Auto +set_global_assignment -name ROUTER_REGISTER_DUPLICATION Auto +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Auto +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION On +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone 10 LP" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "MAX 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone IV E" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Stratix V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V GZ" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Cyclone V" +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria 10" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Stratix V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Cyclone IV GX" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V GZ" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Cyclone V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Arria II GX" +set_global_assignment -name M144K_BLOCK_READ_CLOCK_DUTY_CYCLE_DEPENDENCY Off +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name AUTO_C3_M9K_BIT_SKIP Off +set_global_assignment -name PR_DONE_OPEN_DRAIN On +set_global_assignment -name NCEO_OPEN_DRAIN On +set_global_assignment -name ENABLE_CRC_ERROR_PIN Off +set_global_assignment -name ENABLE_PR_PINS Off +set_global_assignment -name RESERVE_PR_PINS Off +set_global_assignment -name CONVERT_PR_WARNINGS_TO_ERRORS Off +set_global_assignment -name PR_PINS_OPEN_DRAIN Off +set_global_assignment -name CLAMPING_DIODE Off +set_global_assignment -name TRI_STATE_SPI_PINS Off +set_global_assignment -name UNUSED_TSD_PINS_GND Off +set_global_assignment -name IMPLEMENT_MLAB_IN_16_BIT_DEEP_MODE Off +set_global_assignment -name FORM_DDR_CLUSTERING_CLIQUE Off +set_global_assignment -name ALM_REGISTER_PACKING_EFFORT Medium +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION Off -family "Stratix IV" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria 10" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Stratix V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V GZ" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Cyclone V" +set_global_assignment -name RELATIVE_NEUTRON_FLUX 1.0 +set_global_assignment -name SEU_FIT_REPORT Off +set_global_assignment -name HYPER_RETIMER Off -family "Arria 10" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ADD_PIPELINING_MAX "-1" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ASYNCH_CLEAR Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_USER_PRESERVE_RESTRICTION Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_DSP_BLOCKS On +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_RAM_BLOCKS On +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE On +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone 10 LP" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX 10" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV E" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX V" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GZ" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV GX" +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name PWRMGT_SLAVE_DEVICE_TYPE "PV3102 or EM1130" +set_global_assignment -name PWRMGT_SLAVE_DEVICE0_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE1_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE2_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE3_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE4_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE5_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE6_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE7_ADDRESS 0000000 +set_global_assignment -name PWRMGT_VOLTAGE_OUTPUT_FORMAT "Auto discovery" +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_M 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_B 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_R 0 +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone 10 LP" +set_global_assignment -name ENABLE_OCT_DONE On -family "MAX 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV E" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Stratix V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V GZ" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria II GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone V" +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT OFF +set_global_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE Off +set_global_assignment -name ENABLE_AUTONOMOUS_PCIE_HIP Off +set_global_assignment -name ENABLE_ADV_SEU_DETECTION Off +set_global_assignment -name POR_SCHEME "Instant ON" +set_global_assignment -name EN_USER_IO_WEAK_PULLUP On +set_global_assignment -name EN_SPI_IO_WEAK_PULLUP On +set_global_assignment -name POF_VERIFY_PROTECT Off +set_global_assignment -name ENABLE_SPI_MODE_CHECK Off +set_global_assignment -name FORCE_SSMCLK_TO_ISMCLK On +set_global_assignment -name FALLBACK_TO_EXTERNAL_FLASH Off +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 0 +set_global_assignment -name GENERATE_PMSF_FILES On +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name HPS_EARLY_IO_RELEASE Off +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name POWER_HPS_ENABLE Off +set_global_assignment -name POWER_HPS_PROC_FREQ 0.0 +set_global_assignment -name ENABLE_SMART_VOLTAGE_ID Off +set_global_assignment -name IGNORE_PARTITIONS Off +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name RAPID_RECOMPILE_ASSIGNMENT_CHECKING On +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_ENABLE_IPUTF_MODE On -section_id ? +set_global_assignment -name EDA_NATIVELINK_PORTABLE_FILE_PATHS Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY OFF -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST Off -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_EXTENDED_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_IBIS_SPECIFICATION_VERSION 4p2 -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_PRESERVE_HIGH_SPEED_TILES On -section_id ? -entity ? +set_global_assignment -name PARTITION_IGNORE_SOURCE_FILE_CHANGES Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ALWAYS_USE_QXP_NETLIST Off -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS UPDATE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name ALLOW_MULTIPLE_PERSONAS Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ASD_REGION_ID 1 -section_id ? -entity ? +set_global_assignment -name CROSS_BOUNDARY_OPTIMIZATIONS Off -section_id ? -entity ? +set_global_assignment -name PROPAGATE_CONSTANTS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name PROPAGATE_INVERSIONS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name REMOVE_LOGIC_ON_UNCONNECTED_OUTPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_INPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_BIDIRS On -section_id ? -entity ? +set_global_assignment -name ABSORB_PATHS_FROM_OUTPUTS_TO_INPUTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_ENABLE_STRICT_PRESERVATION Off -section_id ? -entity ? diff --git a/peripherals/adc/sint/de10_lite_description.txt b/peripherals/adc/sint/de10_lite_description.txt new file mode 100644 index 00000000..e69de29b diff --git a/peripherals/disp7seg/display_dec.vhd b/peripherals/disp7seg/display_dec.vhd new file mode 100644 index 00000000..97d7dce5 --- /dev/null +++ b/peripherals/disp7seg/display_dec.vhd @@ -0,0 +1,42 @@ +------------------------------------------------------------------- +-- Name : decoder.vhd +-- Author : Leonardo Persike Martins +------------------------------------------------------------------- + +-- Bibliotecas +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +------------------------------------- +entity display_dec is + port + ( + hex : in std_logic_vector(3 downto 0); + dot : in std_logic; + disp : out std_logic_vector(7 downto 0) + ); +end entity display_dec; +------------------------------ + +architecture behaviour of display_dec is + +begin + disp <= "11000000" when hex = x"0" else + "11111001" when hex = x"1" else + "10100100" when hex = x"2" else + "10110000" when hex = x"3" else + "10011001" when hex = x"4" else + "10010010" when hex = x"5" else + "10000010" when hex = x"6" else + "11111000" when hex = x"7" else + "10000000" when hex = x"8" else + "10010000" when hex = x"9" else + "10001000" when hex = x"A" else + "10000011" when hex = x"B" else + "10100111" when hex = x"C" else + "10100001" when hex = x"D" else + "10000110" when hex = x"E" else + "10001110"; -- x"F" + +end architecture behaviour; diff --git a/peripherals/sdram/README.md b/peripherals/sdram/README.md new file mode 100644 index 00000000..a56f618b --- /dev/null +++ b/peripherals/sdram/README.md @@ -0,0 +1,20 @@ +# Memória SDRAM + +Este é um controlador para a memória SDRAM IS42S16320D-7TL. + +[Datasheet da SDRAM](http://www.issi.com/WW/pdf/42-45R-S_86400D-16320D-32160D.pdf) + +## Como fazer funcionar + +Este diretório possui os seguintes arquivos: +* sdram_controller.vhd: Arquivo principal do controlador. +* testbench_sdram.vhd: Arquivo de testbench para o controlador. +* testbench_sdtam.do: Script para simulação no ModelSim. + +Além destes arquivos, o diretório possui uma pasta `sim/` com modelos comportamental de uma memória SDRAM. + +Para utilizar o controlador é apenas necessário adicionar o arquivo sdram_controller.vhd no projeto e instanciá-lo. + +## Problemas + +* Este controlador consegue ler e escrever na memória SDRAM porém o valor escrita fica na memória por apenas um pequeno período de tempo. \ No newline at end of file diff --git a/peripherals/sdram/de10_lite.vhd b/peripherals/sdram/de10_lite.vhd new file mode 100644 index 00000000..1ea08c8e --- /dev/null +++ b/peripherals/sdram/de10_lite.vhd @@ -0,0 +1,371 @@ +------------------------------------------------------------------- +-- Name : de0_lite.vhd +-- Author : +-- Version : 0.1 +-- Copyright : Departamento de Eletrônica, Florianópolis, IFSC +-- Description : Projeto base DE10-Lite +------------------------------------------------------------------- +LIBRARY ieee; +USE IEEE.STD_LOGIC_1164.ALL; +use ieee.numeric_std.all; + +use work.decoder_types.all; + +entity de10_lite is + generic( + --! Num of 32-bits memory words + IMEMORY_WORDS : integer := 1024; --!= 4K (1024 * 4) bytes + DMEMORY_WORDS : integer := 1024 --!= 2k (512 * 2) bytes + ); + + port( + ---------- CLOCK ---------- + ADC_CLK_10 : in std_logic; + MAX10_CLK1_50 : in std_logic; + MAX10_CLK2_50 : in std_logic; + ----------- SDRAM ------------ + DRAM_ADDR : out std_logic_vector(12 downto 0); + DRAM_BA : out std_logic_vector(1 downto 0); + DRAM_CAS_N : out std_logic; + DRAM_CKE : out std_logic; + DRAM_CLK : out std_logic; + DRAM_CS_N : out std_logic; + DRAM_DQ : inout std_logic_vector(15 downto 0); + DRAM_LDQM : out std_logic; + DRAM_RAS_N : out std_logic; + DRAM_UDQM : out std_logic; + DRAM_WE_N : out std_logic; + ----------- SEG7 ------------ + HEX0 : out std_logic_vector(7 downto 0); + HEX1 : out std_logic_vector(7 downto 0); + HEX2 : out std_logic_vector(7 downto 0); + HEX3 : out std_logic_vector(7 downto 0); + HEX4 : out std_logic_vector(7 downto 0); + HEX5 : out std_logic_vector(7 downto 0); + ----------- KEY ------------ + KEY : in std_logic_vector(1 downto 0); + ----------- LED ------------ + LEDR : out std_logic_vector(9 downto 0); + ----------- SW ------------ + SW : in std_logic_vector(9 downto 0); + ----------- VGA ------------ + VGA_B : out std_logic_vector(3 downto 0); + VGA_G : out std_logic_vector(3 downto 0); + VGA_HS : out std_logic; + VGA_R : out std_logic_vector(3 downto 0); + VGA_VS : out std_logic; + ----------- Accelerometer ------------ + GSENSOR_CS_N : out std_logic; + GSENSOR_INT : in std_logic_vector(2 downto 1); + GSENSOR_SCLK : out std_logic; + GSENSOR_SDI : inout std_logic; + GSENSOR_SDO : inout std_logic; + ----------- Arduino ------------ + ARDUINO_IO : inout std_logic_vector(15 downto 0); + ARDUINO_RESET_N : inout std_logic + ); +end entity; + +architecture rtl of de10_lite is + + signal clk : std_logic; + signal clk_sdram_ctrl : std_logic; + signal clk_sdram_chip : std_logic; + signal clk_vga : std_logic; + + signal rst : std_logic; + signal rst_n : std_logic; + + -- Instruction bus signals + signal idata : std_logic_vector(31 downto 0); + signal iaddress : integer range 0 to IMEMORY_WORDS - 1 := 0; + signal address : std_logic_vector(9 downto 0); + + -- Data bus signals + signal daddress : natural; + signal ddata_r : std_logic_vector(31 downto 0); + signal ddata_w : std_logic_vector(31 downto 0); + signal dmask : std_logic_vector(3 downto 0); + signal dcsel : std_logic_vector(1 downto 0); + signal d_we : std_logic := '0'; + + signal ddata_r_mem : std_logic_vector(31 downto 0); + signal d_rd : std_logic; + + signal dmemory_address : natural; + + -- I/O signals + signal input_in : std_logic_vector(31 downto 0); + + -- PLL signals + signal locked_sig : std_logic; + + -- CPU state signals + signal state : cpu_state_t; + + -- SDRAM signals + signal daddress_to_sdram : std_logic_vector(31 downto 0); + signal sdram_addr : std_logic_vector(31 downto 0); + signal chipselect_sdram : std_logic; + signal sdram_d_rd : std_logic; + signal sdram_read : std_logic_vector(15 DOWNTO 0); + signal sdram_read_32 : std_logic_vector(31 downto 0); + signal waitrequest : std_logic; + signal DRAM_DQM : std_logic_vector(1 downto 0); + signal burst : std_logic; + + -- VGA signals + signal vga_addr : std_logic_vector(31 downto 0); + signal disp_ena : std_logic; + signal n_blank : std_logic; + signal n_sync : std_logic; + signal column : integer; + signal row : integer; + signal vga_data_read : std_logic; + signal buffer_to_sdram_addr : std_logic_vector(31 downto 0); + signal VGA_RR : std_logic_vector(3 downto 0); + signal VGA_GG : std_logic_vector(3 downto 0); + signal VGA_BB : std_logic_vector(3 downto 0); + signal chipselect_core : std_logic; + +begin + + pll_inst : entity work.pll + port map( + areset => '0', + inclk0 => MAX10_CLK1_50, + c0 => clk, + c1 => clk_sdram_ctrl, + c2 => clk_vga, + c3 => clk_sdram_chip, + locked => locked_sig + ); + + rst <= SW(9); + rst_n <= SW(8); + + -- Dummy out signals + ARDUINO_IO <= ddata_r(31 downto 16); + LEDR(9) <= SW(9); + + -- IMem shoud be read from instruction and data buses + -- Not enough RAM ports for instruction bus, data bus and in-circuit programming + process(d_rd, dcsel, daddress, iaddress) + begin + if (d_rd = '1') and (dcsel = "00") then + address <= std_logic_vector(to_unsigned(daddress, 10)); + else + address <= std_logic_vector(to_unsigned(iaddress, 10)); + end if; + end process; + + -- 32-bits x 1024 words quartus RAM (dual port: portA -> riscV, portB -> In-System Mem Editor + iram_quartus_inst : entity work.iram_quartus + port map( + address => address(9 downto 0), + byteena => "1111", + clock => clk, + data => (others => '0'), + wren => '0', + q => idata + ); + + dmemory_address <= to_integer(to_unsigned(daddress, 10)); + -- Data Memory RAM + dmem : entity work.dmemory + generic map( + MEMORY_WORDS => DMEMORY_WORDS + ) + port map( + rst => rst, + clk => clk, + data => ddata_w, + address => dmemory_address, + we => d_we, + csel => dcsel(0), + dmask => dmask, + q => ddata_r_mem + ); + + -- Adress space mux ((check sections.ld) -> Data chip select: + -- 0x00000 -> Instruction memory + -- 0x20000 -> Data memory + -- 0x40000 -> Input/Output generic address space + -- 0x60000 -> SDRAM address space + with dcsel select ddata_r <= + idata when "00", + ddata_r_mem when "01", + input_in when "10", + sdram_read_32 when "11",(others => '0') when others; + + -- sdram output is 16 bits while data bus is 32 bits + sdram_read_32 <= x"0000" & sdram_read; + + -- Softcore instatiation + myRisc : entity work.core + generic map( + IMEMORY_WORDS => IMEMORY_WORDS, + DMEMORY_WORDS => DMEMORY_WORDS + ) + port map( + clk => clk, + rst => rst, + iaddress => iaddress, + idata => idata, + daddress => daddress, + ddata_r => ddata_r, + ddata_w => ddata_w, + d_we => d_we, + d_rd => d_rd, + dcsel => dcsel, + dmask => dmask, + state => state + ); + + -- Output register (Dummy LED blinky) + process(clk, rst) + begin + if rst = '1' then + LEDR(3 downto 0) <= (others => '0'); + HEX0 <= (others => '1'); + HEX1 <= (others => '1'); + HEX2 <= (others => '1'); + HEX3 <= (others => '1'); + HEX4 <= (others => '1'); + HEX5 <= (others => '1'); + else + if rising_edge(clk) then + if (d_we = '1') and (dcsel = "10") then + -- ToDo: Simplify compartors + -- ToDo: Maybe use byte addressing? + -- x"01" (word addressing) is x"04" (byte addressing) + if to_unsigned(daddress, 32)(8 downto 0) = x"01" then + LEDR(4 downto 0) <= ddata_w(4 downto 0); + elsif to_unsigned(daddress, 32)(8 downto 0) = x"02" then + HEX0 <= ddata_w(7 downto 0); + HEX1 <= ddata_w(15 downto 8); + HEX2 <= ddata_w(23 downto 16); + HEX3 <= ddata_w(31 downto 24); + -- HEX4 <= ddata_w(7 downto 0); + -- HEX5 <= ddata_w(7 downto 0); + end if; + end if; + end if; + end if; + end process; + + -- Input register + process(clk, rst) + begin + if rst = '1' then + input_in <= (others => '0'); + else + if rising_edge(clk) then + if (d_we = '1') and (dcsel = "10") then + input_in(4 downto 0) <= SW(4 downto 0); + end if; + end if; + end if; + end process; + + -- CORE, VGA and SDRAM muxes + with SW(7) select sdram_addr <= + daddress_to_sdram when '1', + buffer_to_sdram_addr when others; + + with SW(7) select sdram_d_rd <= + d_rd when '1', + vga_data_read when others; + + with SW(7) select chipselect_sdram <= + chipselect_core when '1', + vga_data_read when others; + + with SW(7) select burst <= + '0' when '1', + '1' when others; + + -- SDRAM instatiation + sdram_controller : entity work.sdram_controller + port map( + address => sdram_addr, + byteenable => "11", + chipselect => chipselect_sdram, + clk => clk_sdram_ctrl, + clken => '1', + reset => rst, + reset_req => rst, + write => d_we, + read => sdram_d_rd, + writedata => ddata_w, + burst => burst, + -- outputs: + readdata => sdram_read, + waitrequest => waitrequest, + DRAM_ADDR => DRAM_ADDR, + DRAM_BA => DRAM_BA, + DRAM_CAS_N => DRAM_CAS_N, + DRAM_CKE => DRAM_CKE, + DRAM_CLK => open, + DRAM_CS_N => DRAM_CS_N, + DRAM_DQ => DRAM_DQ, + DRAM_DQM => DRAM_DQM, + DRAM_RAS_N => DRAM_RAS_N, + DRAM_WE_N => DRAM_WE_N + ); + + DRAM_CLK <= clk_sdram_chip; + -- SDRAM Signals + daddress_to_sdram <= std_logic_vector(to_unsigned(daddress, 32)); + DRAM_UDQM <= DRAM_DQM(1); + DRAM_LDQM <= DRAM_DQM(0); + --chipselect_sdram <= dcsel(0) and dcsel(1); + chipselect_core <= dcsel(0) and dcsel(1); + +-- vga_controller : entity work.vga_controller +-- port map( +-- pixel_clk => clk_vga, +-- reset_n => rst_n, +-- h_sync => VGA_HS, +-- v_sync => VGA_VS, +-- disp_ena => disp_ena, +-- column => column, +-- row => row, +-- addr => vga_addr, +-- n_blank => n_blank, +-- n_sync => n_sync +-- ); +-- +-- vga_buffer : entity work.vga_buffer +-- port map( +-- clk => clk_sdram_ctrl, +-- rst => rst, +-- address_vga => vga_addr, +-- sdram_data => sdram_read, +-- sdram_address => buffer_to_sdram_addr, +-- sdram_r => vga_data_read, +-- VGA_R => VGA_RR, +-- VGA_G => VGA_GG, +-- VGA_B => VGA_BB +-- ); + + + PROCESS(disp_ena) + BEGIN + + IF(disp_ena = '1') THEN --display time + VGA_R <= VGA_RR; + VGA_G <= VGA_GG; + VGA_B <= VGA_BB; + ELSE --blanking time + VGA_R <= "0000"; + VGA_G <= "0000"; + VGA_B <= "0000"; + END IF; + + END PROCESS; + + +end; + + diff --git a/peripherals/sdram/pll/pll.ppf b/peripherals/sdram/pll/pll.ppf new file mode 100644 index 00000000..6447543c --- /dev/null +++ b/peripherals/sdram/pll/pll.ppf @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/peripherals/sdram/pll/pll.qip b/peripherals/sdram/pll/pll.qip new file mode 100644 index 00000000..4252c1cd --- /dev/null +++ b/peripherals/sdram/pll/pll.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "18.1" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"] diff --git a/peripherals/sdram/pll/pll.vhd b/peripherals/sdram/pll/pll.vhd new file mode 100644 index 00000000..05f5714a --- /dev/null +++ b/peripherals/sdram/pll/pll.vhd @@ -0,0 +1,461 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: pll.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY pll IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END pll; + + +ARCHITECTURE SYN OF pll IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + locked <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 50, + clk0_duty_cycle => 50, + clk0_multiply_by => 1, + clk0_phase_shift => "0", + clk1_divide_by => 2, + clk1_duty_cycle => 50, + clk1_multiply_by => 5, + clk1_phase_shift => "0", + clk2_divide_by => 5, + clk2_duty_cycle => 50, + clk2_multiply_by => 4, + clk2_phase_shift => "0", + clk3_divide_by => 2, + clk3_duty_cycle => 50, + clk3_multiply_by => 5, + clk3_phase_shift => "3000", + compensate_clock => "CLK0", + inclk0_input_frequency => 20000, + intended_device_family => "MAX 10", + lpm_hint => "CBX_MODULE_PREFIX=pll", + lpm_type => "altpll", + operation_mode => "NORMAL", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire7, + clk => sub_wire0, + locked => sub_wire5 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "1.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "125.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "40.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "125.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "1" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "1.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "125.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "40.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "125.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "3.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ns" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK4 STRING "0" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "3000" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.vhd FALSE +-- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/peripherals/sdram/sdram_controller.vhd b/peripherals/sdram/sdram_controller.vhd new file mode 100644 index 00000000..87acc3f2 --- /dev/null +++ b/peripherals/sdram/sdram_controller.vhd @@ -0,0 +1,480 @@ +-------------------------------------------------------------------------------- +-- VLIW-RT CPU - SDRAM controller top entity +-------------------------------------------------------------------------------- +-- +-- Copyright (c) 2016, Renan Augusto Starke +-- +-- Departamento de Automação e Sistemas - DAS (Automation and Systems Department) +-- Universidade Federal de Santa Catarina - UFSC (Federal University of Santa Catarina) +-- Florianópolis, Brasil (Brazil) +-- +-- This file is part of VLIW-RT CPU. + +-- VLIW-RT CPU 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. + +-- VLIW-RT CPU 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 VLIW-RT CPU. If not, see . +-- +-- This file uses Altera libraries subjected to Altera licenses +-- See altera-ip folder for more information + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_arith.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity sdram_controller is + + -- Altera SDRAM controller configuration + generic( + ASIZE : integer := 25; + DSIZE : integer := 32; + ROWSIZE : integer := 13; + COLSIZE : integer := 10; + BANKSIZE : integer := 2; + ROWSTART : integer := 10; + COLSTART : integer := 0; + BANKSTART : integer := 23; + -- SDRAM latencies + DATA_AVAL : integer := 2; -- cycles + RESET_NOP : integer := 4; -- cycles + RAS_TO_CAS : integer := 2; -- cycles + PRE_TO_ACT : integer := 3; -- cycles + tRP : integer := 2; -- cycles + tRC : integer := 10 -- cycles + ); + + port( + -- inputs: + address : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + byteenable : IN STD_LOGIC_VECTOR(1 DOWNTO 0); + chipselect : IN STD_LOGIC; + clk : IN STD_LOGIC; + clken : IN STD_LOGIC; + reset : IN STD_LOGIC; + reset_req : IN STD_LOGIC; + write : IN STD_LOGIC; + read : in std_logic; + writedata : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + burst : in std_logic; + -- outputs: + readdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); + waitrequest : out std_logic; + DRAM_ADDR : out std_logic_vector(12 downto 0); + DRAM_BA : out std_logic_vector(1 downto 0); + DRAM_CAS_N : out std_logic; + DRAM_CKE : out std_logic; + DRAM_CLK : out std_logic; + DRAM_CS_N : out std_logic; + DRAM_DQ : inout std_logic_vector(15 downto 0); + DRAM_DQM : out std_logic_vector(1 downto 0); + DRAM_RAS_N : out std_logic; + DRAM_WE_N : out std_logic + ); +end entity sdram_controller; + +architecture rtl of sdram_controller is + + type mem_state_type is (CONFIG, C_PRE, C_PRE_NOP, C_INIT_AUTO_REFRESH1, C_INIT_AUTO_REFRESH2, C_LD, C_LD_BURST, C_AUTO_REFRESH, IDLE, WRITE_ROW, WRITE_COL, DATA_REG, DONE); + signal mem_state : mem_state_type; + signal nop_nxt_state : mem_state_type; + + signal d_read : std_logic; + signal d_write : std_logic; + + constant WORD_SIZE : integer := 32; + subtype word_t is std_logic_vector(WORD_SIZE - 1 downto 0); + signal mem_data : word_t; + + signal byteenable_reg : STD_LOGIC_VECTOR(1 DOWNTO 0); + + signal in_reg_en : std_logic; + + signal chip_en_reg : std_logic; + + -- sdram controller signal + signal reset_n : std_logic; + signal addr : std_logic_vector(ASIZE - 1 downto 0); + signal cmd : std_logic_vector(2 downto 0); + signal cmdack : std_logic; + signal datain : std_logic_vector(DSIZE - 1 downto 0); + signal dataout : std_logic_vector(DSIZE - 1 downto 0); + signal dm : std_logic_vector(DSIZE / 8 - 1 downto 0); + signal cs_n : std_logic_vector(1 downto 0); + + signal dram_addr_int : std_logic_vector(11 downto 0); + + signal cas_to_ras : std_logic_vector(3 downto 0); + + -- + signal row_addr : std_logic_vector(ROWSIZE - 1 downto 0); + signal col_addr : std_logic_vector(COLSIZE - 1 downto 0); + signal bank_addr : std_logic_vector(BANKSIZE - 1 downto 0); + + -- + signal wait_cycles : std_logic_vector(3 downto 0); + signal chipselect_last_value : std_logic; + signal read_last_value : std_logic; + signal write_last_value : std_logic; + signal burst_last_value : std_logic; + +begin + + reset_n <= not reset; + DRAM_CLK <= clk; + + -- DRAM_CS_N <= cs_n(0); + + -- DRAM_ADDR <= '0' & dram_addr_int; + + -- FS_ADDR <= address(21 downto 2); + + do_clk_mem_acc_state : process(clk, reset, cmdack) + variable refresh_counter : natural; + variable init_refresh_counter : natural; + begin + if reset = '1' then + mem_state <= CONFIG; + wait_cycles <= std_logic_vector(to_unsigned(RESET_NOP, wait_cycles'length)); + else + if rising_edge(clk) then + case mem_state is + when CONFIG => + if reset = '0' then + + -- wait RESET_NOP cycles until first precharge + wait_cycles <= wait_cycles - 1; + + if wait_cycles = 0 then + init_refresh_counter := 0; + mem_state <= C_PRE; + nop_nxt_state <= C_LD; + wait_cycles <= std_logic_vector(to_unsigned(PRE_TO_ACT - 1, wait_cycles'length)); + end if; + else + wait_cycles <= "0000"; + end if; + + when C_PRE => + mem_state <= C_PRE_NOP; + + when C_PRE_NOP => + wait_cycles <= wait_cycles - 1; + + if wait_cycles = 0 then + mem_state <= nop_nxt_state; + end if; + + when C_INIT_AUTO_REFRESH1 => + wait_cycles <= std_logic_vector(to_unsigned(tRC, wait_cycles'length)); + mem_state <= C_PRE_NOP; + nop_nxt_state <= C_INIT_AUTO_REFRESH2; + + when C_INIT_AUTO_REFRESH2 => + wait_cycles <= std_logic_vector(to_unsigned(tRC, wait_cycles'length)); + mem_state <= C_PRE_NOP; + nop_nxt_state <= IDLE; + + when C_LD => + wait_cycles <= std_logic_vector(to_unsigned(PRE_TO_ACT, wait_cycles'length)); + mem_state <= C_PRE_NOP; + nop_nxt_state <= C_AUTO_REFRESH; + + when C_LD_BURST => + wait_cycles <= std_logic_vector(to_unsigned(PRE_TO_ACT, wait_cycles'length)); + mem_state <= C_PRE_NOP; + nop_nxt_state <= C_AUTO_REFRESH; + + when C_AUTO_REFRESH => + wait_cycles <= std_logic_vector(to_unsigned(tRC, wait_cycles'length)); + mem_state <= C_PRE_NOP; + nop_nxt_state <= IDLE; + + when IDLE => + if refresh_counter = 10 then + refresh_counter := 0; + mem_state <= C_AUTO_REFRESH; + elsif burst = '1' and burst_last_value = '0' then + refresh_counter := 0; + mem_state <= C_LD_BURST; + elsif burst = '0' and burst_last_value = '1' then + refresh_counter := 0; + mem_state <= C_LD; + elsif chipselect = '1' and (read = '1' and read_last_value = '0') then + refresh_counter := 0; + read_last_value <= '1'; + mem_state <= WRITE_ROW; + elsif chipselect = '1' and (write = '1' and write_last_value = '0') then + refresh_counter := 0; + write_last_value <= '1'; + mem_state <= WRITE_ROW; + end if; + + if read = '0' then + read_last_value <= '0'; + end if; + if write = '0' then + write_last_value <= '0'; + end if; + if burst /= burst_last_value then + burst_last_value <= burst; + end if; + + refresh_counter := refresh_counter + 1; + + when WRITE_ROW => + wait_cycles <= std_logic_vector(to_unsigned(RAS_TO_CAS - 2, wait_cycles'length)); + mem_state <= C_PRE_NOP; + nop_nxt_state <= WRITE_COL; + + when WRITE_COL => + if read = '1' then + wait_cycles <= std_logic_vector(to_unsigned(DATA_AVAL - 2, wait_cycles'length)); + mem_state <= C_PRE_NOP; + nop_nxt_state <= DATA_REG; + else + mem_state <= DONE; + end if; + + when DATA_REG => + mem_state <= DONE; + + when DONE => + mem_state <= IDLE; + + end case; + end if; + end if; + end process; + + row_addr <= address(ROWSTART + ROWSIZE - 1 downto ROWSTART); -- (10 + (13 - 1) downto 9) -> (22 downto 10) -- assignment of the row address bits from address + col_addr <= address(COLSTART + COLSIZE - 1 downto COLSTART); -- (0 + (9 - 1) downto 0) -> (9 downto 0) -- assignment of the column address bits + bank_addr <= address(BANKSTART + BANKSIZE - 1 downto BANKSTART); -- (23 + (2 - 1) downto 23) -> (24 downto 23) -- assignment of the bank address bits + + do_clk_mem_acc_state_output : process(mem_state, reset, chipselect, write, byteenable, address, chip_en_reg, byteenable_reg, bank_addr, row_addr, col_addr) + begin + in_reg_en <= '0'; + waitrequest <= '0'; + d_read <= '0'; + d_write <= '0'; + + -- altera sdram controller + addr <= (others => '0'); + cmd <= (others => '0'); + + -- internal sdram controller + DRAM_ADDR <= (others => '0'); + + DRAM_BA <= "00"; + DRAM_CS_N <= '0'; + DRAM_CKE <= '1'; + DRAM_RAS_N <= '1'; + DRAM_CAS_N <= '1'; + DRAM_WE_N <= '1'; + + DRAM_DQM <= "00"; + + case mem_state is + + when CONFIG => + if reset = '0' then + waitrequest <= '1'; + addr <= (others => '0'); + DRAM_CS_N <= '0'; + else + DRAM_CKE <= '0'; + end if; + + when C_PRE => + waitrequest <= '1'; + + -- precharge all banks + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '0'; + DRAM_CAS_N <= '1'; + DRAM_WE_N <= '0'; + -- all banks code + DRAM_ADDR(10) <= '1'; + + when C_PRE_NOP => + waitrequest <= '1'; + DRAM_CS_N <= '0'; + + when C_LD => + waitrequest <= '1'; + + -- burst length: 1 word + DRAM_ADDR(2 downto 0) <= "000"; + -- burst type: sequential + DRAM_ADDR(3) <= '0'; + -- cas latency: 2 + DRAM_ADDR(6 downto 4) <= "010"; + -- Op mode: standard operation + DRAM_ADDR(8 downto 7) <= "00"; + -- Write burst mode: single location + DRAM_ADDR(9) <= '1'; + -- reserved + DRAM_ADDR(12 downto 10) <= "001"; + + -- commands + DRAM_BA <= "00"; + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '0'; + DRAM_CAS_N <= '0'; + DRAM_WE_N <= '0'; + + when C_LD_BURST => + waitrequest <= '1'; + + -- burst length: 8 words + DRAM_ADDR(2 downto 0) <= "011"; + -- burst type: sequential + DRAM_ADDR(3) <= '0'; + -- cas latency: 2 + DRAM_ADDR(6 downto 4) <= "010"; + -- Op mode: standard operation + DRAM_ADDR(8 downto 7) <= "00"; + -- Write burst mode: single location + DRAM_ADDR(9) <= '1'; + -- reserved + DRAM_ADDR(12 downto 10) <= "001"; + + -- commands + DRAM_BA <= "00"; + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '0'; + DRAM_CAS_N <= '0'; + DRAM_WE_N <= '0'; + + when C_INIT_AUTO_REFRESH1 => + + -- commands + DRAM_BA <= "00"; + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '0'; + DRAM_CAS_N <= '0'; + DRAM_WE_N <= '1'; + + when C_INIT_AUTO_REFRESH2 => + + -- commands + DRAM_BA <= "00"; + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '0'; + DRAM_CAS_N <= '0'; + DRAM_WE_N <= '1'; + + when C_AUTO_REFRESH => + + -- commands + DRAM_BA <= "00"; + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '0'; + DRAM_CAS_N <= '0'; + DRAM_WE_N <= '1'; + + DRAM_ADDR(10) <= '1'; + + when IDLE => + waitrequest <= chipselect; + + when WRITE_ROW => + waitrequest <= '1'; + + DRAM_BA <= bank_addr; + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '0'; + DRAM_CAS_N <= '1'; + DRAM_WE_N <= '1'; + + DRAM_ADDR <= row_addr; + + when WRITE_COL => + waitrequest <= '1'; + + if write = '1' then + DRAM_DQM <= not byteenable; + d_write <= '1'; + DRAM_WE_N <= '0'; + end if; + + DRAM_BA <= bank_addr; + DRAM_CS_N <= '0'; + DRAM_RAS_N <= '1'; + DRAM_CAS_N <= '0'; + + DRAM_ADDR(COLSIZE - 1 downto 0) <= col_addr; + -- enable auto precharge + DRAM_ADDR(10) <= '1'; + + when DATA_REG => + waitrequest <= '1'; + d_read <= '1'; + + when DONE => + + end case; + end process; + + process(clk, reset, d_read, byteenable, DRAM_DQ) + variable counter : natural := 0; + variable read : std_logic := '0'; + begin + if reset = '1' then + readdata <= (others => '0'); + else + if rising_edge(clk) then + + if d_read = '1' and burst = '1' then + counter := 8; + elsif d_read = '1' then + counter := 1; + end if; + + if counter > 0 then + case byteenable is + + when "00" => + + when "01" => + readdata <= x"00" & DRAM_DQ(7 downto 0); + + when "10" => + readdata <= x"00" & DRAM_DQ(15 downto 8); + + when "11" => + readdata <= DRAM_DQ; + + when others => + end case; + counter := counter - 1; + end if; + + end if; + end if; + end process; + + DRAM_DQ <= (DRAM_DQ'range => 'Z') WHEN (d_write = '0') ELSE writedata(15 downto 0); + + process(clk, reset, byteenable, in_reg_en) + begin + if reset = '1' then + byteenable_reg <= "11"; + else + if rising_edge(clk) and in_reg_en = '1' then + byteenable_reg <= not byteenable; + chip_en_reg <= address(26); + end if; + end if; + end process; + +end rtl; diff --git a/peripherals/sdram/sim/mt48lc8m16a2.vhd b/peripherals/sdram/sim/mt48lc8m16a2.vhd new file mode 100644 index 00000000..053bf031 --- /dev/null +++ b/peripherals/sdram/sim/mt48lc8m16a2.vhd @@ -0,0 +1,1120 @@ +----------------------------------------------------------------------------------------- +-- +-- File Name: MT48LC8M16A2.VHD +-- Version: 0.0c +-- Date: April 8th, 1999 +-- Model: Behavioral +-- Simulator: Model Technology VLOG (PC version 4.7i) +-- +-- Dependencies: None +-- +-- Author: Son P. Huynh +-- Email: sphuynh@micron.com +-- Phone: (208) 368-3825 +-- Company: Micron Technology, Inc. +-- Part Number: MT48LC8M16A2 (2Mb x 16 x 4 Banks) +-- +-- Description: Micron 64Mb SDRAM +-- +-- Limitation: - Doesn't check for 4096-cycle refresh +-- +-- Note: - Set simulator resolution to "ps" accuracy +-- +-- Disclaimer: THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY +-- WHATSOEVER AND MICRON SPECIFICALLY DISCLAIMS ANY +-- IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR +-- A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT. +-- +-- Copyright (c) 1998 Micron Semiconductor Products, Inc. +-- All rights researved +-- +-- Rev Author Phone Date Changes +-- ---- ---------------------------- ---------- ------------------------------------- +-- 0.0c Son P. Huynh 208-368-3825 04/08/1999 Fix tWR + tRP in Write with AP +-- Micron Technology Inc. Fix tRC check in Load Mode Register +-- +-- 0.0b Son P. Huynh 208-368-3825 01/06/1998 Derive from 64Mb SDRAM model +-- Micron Technology Inc. +-- +----------------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE WORK.mti_pkg.ALL; + +ENTITY mt48lc8m16a2 IS + GENERIC ( + tAC : TIME := 5.0 ns; -- Timing parameter for -8E device + tAH : TIME := 1.0 ns; + tAS : TIME := 2.0 ns; + tCH : TIME := 3.0 ns; + tCL : TIME := 3.0 ns; + --tCK : TIME := 7.5 ns; -- 133mhz operation + tCK : TIME := 10.0 ns; -- 100mhz operation + tDH : TIME := 1.0 ns; + tDS : TIME := 2.0 ns; + tCKH : TIME := 1.0 ns; + tCKS : TIME := 2.0 ns; + tCMH : TIME := 1.0 ns; + tCMS : TIME := 2.0 ns; + tHZ : TIME := 6.0 ns; + tOH : TIME := 3.0 ns; + tMRD : INTEGER := 2; + tRAS : TIME := 50.0 ns; + tRC : TIME := 80.0 ns; + tRCD : TIME := 20.0 ns; + tRP : TIME := 20.0 ns; + tRRD : TIME := 20.0 ns; + tWR : INTEGER := 2; + addr_bits : INTEGER := 12; + data_bits : INTEGER := 16; + col_bits : INTEGER := 9 + ); + PORT ( + Dq : INOUT STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => 'Z'); + Addr : IN STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0'); + Ba : IN STD_LOGIC_VECTOR := "00"; + Clk : IN STD_LOGIC := '0'; + Cke : IN STD_LOGIC := '0'; + Cs_n : IN STD_LOGIC := '1'; + Ras_n : IN STD_LOGIC := '0'; + Cas_n : IN STD_LOGIC := '0'; + We_n : IN STD_LOGIC := '0'; + Dqm : IN STD_LOGIC_VECTOR (1 DOWNTO 0) := "00" + ); +END mt48lc8m16a2; + +ARCHITECTURE behave OF mt48lc8m16a2 IS + TYPE State IS (ACT, A_REF, BST, LMR, NOP, PRECH, READ, READ_A, WRITE, WRITE_A); + TYPE Array4xI IS ARRAY (3 DOWNTO 0) OF INTEGER; + TYPE Array4xB IS ARRAY (3 DOWNTO 0) OF BIT; + TYPE Array4x2BV IS ARRAY (3 DOWNTO 0) OF BIT_VECTOR (1 DOWNTO 0); + TYPE Array4xCBV IS ARRAY (4 DOWNTO 0) OF BIT_VECTOR (Col_bits - 1 DOWNTO 0); + TYPE Array_state IS ARRAY (4 DOWNTO 0) OF State; + SIGNAL Operation : State := NOP; + SIGNAL Mode_reg : BIT_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0'); + SIGNAL Active_enable, Aref_enable, Burst_term : BIT := '0'; + SIGNAL Mode_reg_enable, Prech_enable, Read_enable, Write_enable : BIT := '0'; + SIGNAL Burst_length_1, Burst_length_2, Burst_length_4, Burst_length_8 : BIT := '0'; + SIGNAL Cas_latency_2, Cas_latency_3 : BIT := '0'; + SIGNAL Ras_in, Cas_in, We_in : BIT := '0'; + SIGNAL Write_burst_mode : BIT := '0'; + SIGNAL Sys_clk, CkeZ : BIT := '0'; + + -- Checking internal wires + SIGNAL Pre_chk : BIT_VECTOR (3 DOWNTO 0) := "0000"; + SIGNAL Act_chk : BIT_VECTOR (3 DOWNTO 0) := "0000"; + SIGNAL Dq_in_chk, Dq_out_chk : BIT := '0'; + SIGNAL Bank_chk : BIT_VECTOR (1 DOWNTO 0) := "00"; + SIGNAL Row_chk : BIT_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0'); + SIGNAL Col_chk : BIT_VECTOR (col_bits - 1 DOWNTO 0) := (OTHERS => '0'); + + BEGIN + -- CS# Decode + WITH Cs_n SELECT + Cas_in <= TO_BIT (Cas_n, '1') WHEN '0', + '1' WHEN '1', + '1' WHEN OTHERS; + WITH Cs_n SELECT + Ras_in <= TO_BIT (Ras_n, '1') WHEN '0', + '1' WHEN '1', + '1' WHEN OTHERS; + WITH Cs_n SELECT + We_in <= TO_BIT (We_n, '1') WHEN '0', + '1' WHEN '1', + '1' WHEN OTHERS; + + -- Commands Decode + Active_enable <= NOT(Ras_in) AND Cas_in AND We_in; + Aref_enable <= NOT(Ras_in) AND NOT(Cas_in) AND We_in; + Burst_term <= Ras_in AND Cas_in AND NOT(We_in); + Mode_reg_enable <= NOT(Ras_in) AND NOT(Cas_in) AND NOT(We_in); + Prech_enable <= NOT(Ras_in) AND Cas_in AND NOT(We_in); + Read_enable <= Ras_in AND NOT(Cas_in) AND We_in; + Write_enable <= Ras_in AND NOT(Cas_in) AND NOT(We_in); + + -- Burst Length Decode + Burst_length_1 <= NOT(Mode_reg(2)) AND NOT(Mode_reg(1)) AND NOT(Mode_reg(0)); + Burst_length_2 <= NOT(Mode_reg(2)) AND NOT(Mode_reg(1)) AND Mode_reg(0); + Burst_length_4 <= NOT(Mode_reg(2)) AND Mode_reg(1) AND NOT(Mode_reg(0)); + Burst_length_8 <= NOT(Mode_reg(2)) AND Mode_reg(1) AND Mode_reg(0); + + -- CAS Latency Decode + Cas_latency_2 <= NOT(Mode_reg(6)) AND Mode_reg(5) AND NOT(Mode_reg(4)); + Cas_latency_3 <= NOT(Mode_reg(6)) AND Mode_reg(5) AND Mode_reg(4); + + -- Write Burst Mode + Write_burst_mode <= Mode_reg(9); + + -- System Clock + int_clk : PROCESS (Clk) + begin + IF Clk'LAST_VALUE = '0' AND Clk = '1' THEN + CkeZ <= TO_BIT(Cke, '1'); + END IF; + Sys_clk <= CkeZ AND TO_BIT(Clk, '0'); + END PROCESS; + + state_register : PROCESS + TYPE ram_type IS ARRAY (2**col_bits - 1 DOWNTO 0) OF BIT_VECTOR (data_bits - 1 DOWNTO 0); + TYPE ram_pntr IS ACCESS ram_type; + TYPE ram_stor IS ARRAY (2**addr_bits - 1 DOWNTO 0) OF ram_pntr; + VARIABLE Bank0 : ram_stor; + VARIABLE Bank1 : ram_stor; + VARIABLE Bank2 : ram_stor; + VARIABLE Bank3 : ram_stor; + VARIABLE Row_index, Col_index : INTEGER := 0; + VARIABLE Dq_temp : BIT_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => '0'); + + VARIABLE Col_addr : Array4xCBV; + VARIABLE Bank_addr : Array4x2BV; + VARIABLE Dqm_reg0, Dqm_reg1 : BIT_VECTOR (1 DOWNTO 0) := "00"; + + VARIABLE Bank, Previous_bank : BIT_VECTOR (1 DOWNTO 0) := "00"; + VARIABLE B0_row_addr, B1_row_addr, B2_row_addr, B3_row_addr : BIT_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0'); + VARIABLE Col_brst : BIT_VECTOR (col_bits - 1 DOWNTO 0) := (OTHERS => '0'); + VARIABLE Row : BIT_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0'); + VARIABLE Col : BIT_VECTOR (col_bits - 1 DOWNTO 0) := (OTHERS => '0'); + VARIABLE Burst_counter : INTEGER := 0; + + VARIABLE Command : Array_state; + VARIABLE Bank_precharge : Array4x2BV; + VARIABLE A10_precharge : Array4xB := ('0' & '0' & '0' & '0'); + VARIABLE Auto_precharge : Array4xB := ('0' & '0' & '0' & '0'); + VARIABLE Read_precharge : Array4xB := ('0' & '0' & '0' & '0'); + VARIABLE Write_precharge : Array4xB := ('0' & '0' & '0' & '0'); + VARIABLE Count_precharge : Array4xI := (0 & 0 & 0 & 0); + VARIABLE RW_interrupt_write : Array4xB := ('0' & '0' & '0' & '0'); + VARIABLE RW_interrupt_read : Array4xB := ('0' & '0' & '0' & '0'); + + VARIABLE Data_in_enable, Data_out_enable : BIT := '0'; + VARIABLE Pc_b0, Pc_b1, Pc_b2, Pc_b3 : BIT := '0'; + VARIABLE Act_b0, Act_b1, Act_b2, Act_b3 : BIT := '0'; + + -- Timing Check + VARIABLE MRD_chk : INTEGER := 0; + VARIABLE RC_chk, RRD_chk : TIME := 0 ns; + VARIABLE RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3 : TIME := 0 ns; + VARIABLE RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3 : TIME := 0 ns; + VARIABLE RP_chk, RP_chk0, RP_chk1, RP_chk2, RP_chk3 : TIME := 0 ns; + VARIABLE WR_chk : Array4xI := (0 & 0 & 0 & 0); + + -- Initialize empty rows + PROCEDURE Init_mem (Bank : BIT_VECTOR (1 DOWNTO 0); Row_index : INTEGER) IS + VARIABLE i, j : INTEGER := 0; + BEGIN + IF Bank = "00" THEN + IF Bank0 (Row_index) = NULL THEN -- Check to see if row empty + Bank0 (Row_index) := NEW ram_type; -- Open new row for access + FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP -- Filled row with zeros + FOR j IN (data_bits - 1) DOWNTO 0 LOOP + Bank0 (Row_index) (i) (j) := '0'; + END LOOP; + END LOOP; + END IF; + ELSIF Bank = "01" THEN + IF Bank1 (Row_index) = NULL THEN + Bank1 (Row_index) := NEW ram_type; + FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP + FOR j IN (data_bits - 1) DOWNTO 0 LOOP + Bank1 (Row_index) (i) (j) := '0'; + END LOOP; + END LOOP; + END IF; + ELSIF Bank = "10" THEN + IF Bank2 (Row_index) = NULL THEN + Bank2 (Row_index) := NEW ram_type; + FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP + FOR j IN (data_bits - 1) DOWNTO 0 LOOP + Bank2 (Row_index) (i) (j) := '0'; + END LOOP; + END LOOP; + END IF; + ELSIF Bank = "11" THEN + IF Bank3 (Row_index) = NULL THEN + Bank3 (Row_index) := NEW ram_type; + FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP + FOR j IN (data_bits - 1) DOWNTO 0 LOOP + Bank3 (Row_index) (i) (j) := '0'; + END LOOP; + END LOOP; + END IF; + END IF; + END; + + -- Burst Counter + PROCEDURE Burst_decode IS + VARIABLE Col_int : INTEGER := 0; + VARIABLE Col_vec, Col_temp : BIT_VECTOR (col_bits - 1 DOWNTO 0) := (OTHERS => '0'); + BEGIN + -- Advance Burst Counter + Burst_counter := Burst_counter + 1; + + -- Burst Type + IF Mode_reg (3) = '0' THEN + Col_int := TO_INTEGER(Col); + Col_int := Col_int + 1; + TO_BITVECTOR (Col_int, Col_temp); + ELSIF Mode_reg (3) = '1' THEN + TO_BITVECTOR (Burst_counter, Col_vec); + Col_temp (2) := Col_vec (2) XOR Col_brst (2); + Col_temp (1) := Col_vec (1) XOR Col_brst (1); + Col_temp (0) := Col_vec (0) XOR Col_brst (0); + END IF; + + -- Burst Length + IF Burst_length_2 = '1' THEN + Col (0) := Col_temp (0); + ELSIF Burst_length_4 = '1' THEN + Col (1 DOWNTO 0) := Col_temp (1 DOWNTO 0); + ELSIF Burst_length_8 = '1' THEN + Col (2 DOWNTO 0) := Col_temp (2 DOWNTO 0); + ELSE + Col := Col_temp; + END IF; + + -- Burst Read Single Write + IF Write_burst_mode = '1' AND Data_in_enable = '1' THEN + Data_in_enable := '0'; + END IF; + + -- Data counter + IF Burst_length_1 = '1' THEN + IF Burst_counter >= 1 THEN + IF Data_in_enable = '1' THEN + Data_in_enable := '0'; + ELSIF Data_out_enable = '1' THEN + Data_out_enable := '0'; + END IF; + END IF; + ELSIF Burst_length_2 = '1' THEN + IF Burst_counter >= 2 THEN + IF Data_in_enable = '1' THEN + Data_in_enable := '0'; + ELSIF Data_out_enable = '1' THEN + Data_out_enable := '0'; + END IF; + END IF; + ELSIF Burst_length_4 = '1' THEN + IF Burst_counter >= 4 THEN + IF Data_in_enable = '1' THEN + Data_in_enable := '0'; + ELSIF Data_out_enable = '1' THEN + Data_out_enable := '0'; + END IF; + END IF; + ELSIF Burst_length_8 = '1' THEN + IF Burst_counter >= 8 THEN + IF Data_in_enable = '1' THEN + Data_in_enable := '0'; + ELSIF Data_out_enable = '1' THEN + Data_out_enable := '0'; + END IF; + END IF; + END IF; + END; + + BEGIN + WAIT ON Sys_clk; + IF Sys_clk = '1' THEN + -- Internal Command Pipeline + Command(0) := Command(1); + Command(1) := Command(2); + Command(2) := Command(3); + Command(3) := NOP; + + Col_addr(0) := Col_addr(1); + Col_addr(1) := Col_addr(2); + Col_addr(2) := Col_addr(3); + Col_addr(3) := (OTHERS => '0'); + + Bank_addr(0) := Bank_addr(1); + Bank_addr(1) := Bank_addr(2); + Bank_addr(2) := Bank_addr(3); + Bank_addr(3) := "00"; + + Bank_precharge(0) := Bank_precharge(1); + Bank_precharge(1) := Bank_precharge(2); + Bank_precharge(2) := Bank_precharge(3); + Bank_precharge(3) := "00"; + + A10_precharge(0) := A10_precharge(1); + A10_precharge(1) := A10_precharge(2); + A10_precharge(2) := A10_precharge(3); + A10_precharge(3) := '0'; + + -- Operation Decode (Optional for showing current command on posedge clock / debug feature) + IF Active_enable = '1' THEN + Operation <= ACT; + ELSIF Aref_enable = '1' THEN + Operation <= A_REF; + ELSIF Burst_term = '1' THEN + Operation <= BST; + ELSIF Mode_reg_enable = '1' THEN + Operation <= LMR; + ELSIF Prech_enable = '1' THEN + Operation <= PRECH; + ELSIF Read_enable = '1' THEN + IF Addr(10) = '0' THEN + Operation <= READ; + ELSE + Operation <= READ_A; + END IF; + ELSIF Write_enable = '1' THEN + IF Addr(10) = '0' THEN + Operation <= WRITE; + ELSE + Operation <= WRITE_A; + END IF; + ELSE + Operation <= NOP; + END IF; + + -- Dqm pipeline for Read + Dqm_reg0 := Dqm_reg1; + Dqm_reg1 := TO_BITVECTOR(Dqm); + + -- Read or Write with Auto Precharge Counter + IF Auto_precharge (0) = '1' THEN + Count_precharge (0) := Count_precharge (0) + 1; + END IF; + IF Auto_precharge (1) = '1' THEN + Count_precharge (1) := Count_precharge (1) + 1; + END IF; + IF Auto_precharge (2) = '1' THEN + Count_precharge (2) := Count_precharge (2) + 1; + END IF; + IF Auto_precharge (3) = '1' THEN + Count_precharge (3) := Count_precharge (3) + 1; + END IF; + + -- tMRD Counter + MRD_chk := MRD_chk + 1; + + -- tWR Counter + WR_chk(0) := WR_chk(0) + 1; + WR_chk(1) := WR_chk(1) + 1; + WR_chk(2) := WR_chk(2) + 1; + WR_chk(3) := WR_chk(3) + 1; + + -- Auto Refresh + IF Aref_enable = '1' THEN + -- Auto Refresh to Auto Refresh + ASSERT (NOW - RC_chk >= tRC) + REPORT "tRC violation during Auto Refresh" + SEVERITY WARNING; + -- Precharge to Auto Refresh + ASSERT (NOW - RP_chk >= tRP) + REPORT "tRP violation during Auto Refresh" + SEVERITY WARNING; + -- All banks must be idle before refresh + IF (Pc_b0 ='0' OR Pc_b1 = '0' OR Pc_b2 ='0' OR Pc_b3 = '0') THEN + ASSERT (FALSE) + REPORT "All banks must be Precharge before Auto Refresh" + SEVERITY WARNING; + END IF; + -- Record current tRC time + RC_chk := NOW; + END IF; + + -- Load Mode Register + IF Mode_reg_enable = '1' THEN + Mode_reg <= TO_BITVECTOR (Addr); + IF (Pc_b0 ='0' OR Pc_b1 = '0' OR Pc_b2 ='0' OR Pc_b3 = '0') THEN + ASSERT (FALSE) + REPORT "All bank must be Precharge before Load Mode Register" + SEVERITY WARNING; + END IF; + -- REF to LMR + ASSERT (NOW - RC_chk >= tRC) + REPORT "tRC violation during Load Mode Register" + SEVERITY WARNING; + -- LMR to LMR + ASSERT (MRD_chk >= tMRD) + REPORT "tMRD violation during Load Mode Register" + SEVERITY WARNING; + -- Record current tMRD time + MRD_chk := 0; + END IF; + + -- Active Block (latch Bank and Row Address) + IF Active_enable = '1' THEN + IF Ba = "00" AND Pc_b0 = '1' THEN + Act_b0 := '1'; + Pc_b0 := '0'; + B0_row_addr := TO_BITVECTOR (Addr); + RCD_chk0 := NOW; + RAS_chk0 := NOW; + -- Precharge to Active Bank 0 + ASSERT (NOW - RP_chk0 >= tRP) + REPORT "tRP violation during Activate Bank 0" + SEVERITY WARNING; + ELSIF Ba = "01" AND Pc_b1 = '1' THEN + Act_b1 := '1'; + Pc_b1 := '0'; + B1_row_addr := TO_BITVECTOR (Addr); + RCD_chk1 := NOW; + RAS_chk1 := NOW; + -- Precharge to Active Bank 1 + ASSERT (NOW - RP_chk1 >= tRP) + REPORT "tRP violation during Activate Bank 1" + SEVERITY WARNING; + ELSIF Ba = "10" AND Pc_b2 = '1' THEN + Act_b2 := '1'; + Pc_b2 := '0'; + B2_row_addr := TO_BITVECTOR (Addr); + RCD_chk2 := NOW; + RAS_chk2 := NOW; + -- Precharge to Active Bank 2 + ASSERT (NOW - RP_chk2 >= tRP) + REPORT "tRP violation during Activate Bank 2" + SEVERITY WARNING; + ELSIF Ba = "11" AND Pc_b3 = '1' THEN + Act_b3 := '1'; + Pc_b3 := '0'; + B3_row_addr := TO_BITVECTOR (Addr); + RCD_chk3 := NOW; + RAS_chk3 := NOW; + -- Precharge to Active Bank 3 + ASSERT (NOW - RP_chk3 >= tRP) + REPORT "tRP violation during Activate Bank 3" + SEVERITY WARNING; + ELSIF Ba = "00" AND Pc_b0 = '0' THEN + ASSERT (FALSE) + REPORT "Bank 0 is not Precharged" + SEVERITY WARNING; + ELSIF Ba = "01" AND Pc_b1 = '0' THEN + ASSERT (FALSE) + REPORT "Bank 1 is not Precharged" + SEVERITY WARNING; + ELSIF Ba = "10" AND Pc_b2 = '0' THEN + ASSERT (FALSE) + REPORT "Bank 2 is not Precharged" + SEVERITY WARNING; + ELSIF Ba = "11" AND Pc_b3 = '0' THEN + ASSERT (FALSE) + REPORT "Bank 3 is not Precharged" + SEVERITY WARNING; + END IF; + -- Active Bank A to Active Bank B + IF ((Previous_bank /= TO_BITVECTOR (Ba)) AND (NOW - RRD_chk < tRRD)) THEN + ASSERT (FALSE) + REPORT "tRRD violation during Activate" + SEVERITY WARNING; + END IF; + -- LMR to ACT + ASSERT (MRD_chk >= tMRD) + REPORT "tMRD violation during Activate" + SEVERITY WARNING; + -- AutoRefresh to Activate + ASSERT (NOW - RC_chk >= tRC) + REPORT "tRC violation during Activate" + SEVERITY WARNING; + -- Record variable for checking violation + RRD_chk := NOW; + Previous_bank := TO_BITVECTOR (Ba); + END IF; + + -- Precharge Block + IF Prech_enable = '1' THEN + IF Addr(10) = '1' THEN + Pc_b0 := '1'; + Pc_b1 := '1'; + Pc_b2 := '1'; + Pc_b3 := '1'; + Act_b0 := '0'; + Act_b1 := '0'; + Act_b2 := '0'; + Act_b3 := '0'; + RP_chk0 := NOW; + RP_chk1 := NOW; + RP_chk2 := NOW; + RP_chk3 := NOW; + -- Activate to Precharge all banks + ASSERT ((NOW - RAS_chk0 >= tRAS) OR (NOW - RAS_chk1 >= tRAS)) + REPORT "tRAS violation during Precharge all banks" + SEVERITY WARNING; + -- tWR violation check for Write + IF ((WR_chk(0) < tWR) OR (WR_chk(1) < tWR) OR + (WR_chk(2) < tWR) OR (WR_chk(3) < tWR)) THEN + ASSERT (FALSE) + REPORT "tWR violation during Precharge ALL banks" + SEVERITY WARNING; + END IF; + ELSIF Addr(10) = '0' THEN + IF Ba = "00" THEN + Pc_b0 := '1'; + Act_b0 := '0'; + RP_chk0 := NOW; + -- Activate to Precharge bank 0 + ASSERT (NOW - RAS_chk0 >= tRAS) + REPORT "tRAS violation during Precharge bank 0" + SEVERITY WARNING; + ELSIF Ba = "01" THEN + Pc_b1 := '1'; + Act_b1 := '0'; + RP_chk1 := NOW; + -- Activate to Precharge bank 1 + ASSERT (NOW - RAS_chk1 >= tRAS) + REPORT "tRAS violation during Precharge bank 1" + SEVERITY WARNING; + ELSIF Ba = "10" THEN + Pc_b2 := '1'; + Act_b2 := '0'; + RP_chk2 := NOW; + -- Activate to Precharge bank 2 + ASSERT (NOW - RAS_chk2 >= tRAS) + REPORT "tRAS violation during Precharge bank 2" + SEVERITY WARNING; + ELSIF Ba = "11" THEN + Pc_b3 := '1'; + Act_b3 := '0'; + RP_chk3 := NOW; + -- Activate to Precharge bank 3 + ASSERT (NOW - RAS_chk3 >= tRAS) + REPORT "tRAS violation during Precharge bank 3" + SEVERITY WARNING; + END IF; + -- tWR violation check for Write + ASSERT (WR_chk(TO_INTEGER(Ba)) >= tWR) + REPORT "tWR violation during Precharge" + SEVERITY WARNING; + END IF; + -- Terminate a Write Immediately (if same bank or all banks) + IF (Data_in_enable = '1' AND (Bank = TO_BITVECTOR(Ba) OR Addr(10) = '1')) THEN + Data_in_enable := '0'; + END IF; + -- Precharge Command Pipeline for READ + IF CAS_latency_3 = '1' THEN + Command(2) := PRECH; + Bank_precharge(2) := TO_BITVECTOR (Ba); + A10_precharge(2) := TO_BIT(Addr(10)); + ELSIF CAS_latency_2 = '1' THEN + Command(1) := PRECH; + Bank_precharge(1) := TO_BITVECTOR (Ba); + A10_precharge(1) := TO_BIT(Addr(10)); + END IF; + -- Record Current tRP time + RP_chk := NOW; + END IF; + + -- Burst Terminate + IF Burst_term = '1' THEN + -- Terminate a Write immediately + IF Data_in_enable = '1' THEN + Data_in_enable := '0'; + END IF; + -- Terminate a Read depend on CAS Latency + IF CAS_latency_3 = '1' THEN + Command(2) := BST; + ELSIF CAS_latency_2 = '1' THEN + Command(1) := BST; + END IF; + END IF; + + -- Read, Write, Column Latch + IF Read_enable = '1' OR Write_enable = '1' THEN + -- Check to see if bank is open (ACT) for Read or Write + IF ((Ba = "00" AND Pc_b0 = '1') OR (Ba = "01" AND Pc_b1 = '1') OR (Ba = "10" AND Pc_b2 = '1') OR (Ba = "11" AND Pc_b3 = '1')) THEN + ASSERT (FALSE) + REPORT "Cannot Read or Write - Bank is not Activated" + SEVERITY WARNING; + END IF; + -- Activate to Read or Write + IF Ba = "00" THEN + ASSERT (NOW - RCD_chk0 >= tRCD) + REPORT "tRCD violation during Read or Write to Bank 0" + SEVERITY WARNING; + ELSIF Ba = "01" THEN + ASSERT (NOW - RCD_chk1 >= tRCD) + REPORT "tRCD violation during Read or Write to Bank 1" + SEVERITY WARNING; + ELSIF Ba = "10" THEN + ASSERT (NOW - RCD_chk2 >= tRCD) + REPORT "tRCD violation during Read or Write to Bank 2" + SEVERITY WARNING; + ELSIF Ba = "11" THEN + ASSERT (NOW - RCD_chk3 >= tRCD) + REPORT "tRCD violation during Read or Write to Bank 3" + SEVERITY WARNING; + END IF; + + -- Read Command + IF Read_enable = '1' THEN + -- CAS Latency Pipeline + IF Cas_latency_3 = '1' THEN + IF Addr(10) = '1' THEN + Command(2) := READ_A; + ELSE + Command(2) := READ; + END IF; + Col_addr (2) := TO_BITVECTOR (Addr(col_bits - 1 DOWNTO 0)); + Bank_addr (2) := TO_BITVECTOR (Ba); + ELSIF Cas_latency_2 = '1' THEN + IF Addr(10) = '1' THEN + Command(1) := READ_A; + ELSE + Command(1) := READ; + END IF; + Col_addr (1) := TO_BITVECTOR (Addr(col_bits - 1 DOWNTO 0)); + Bank_addr (1) := TO_BITVECTOR (Ba); + END IF; + + -- Read intterupt a Write (terminate Write immediately) + IF Data_in_enable = '1' THEN + Data_in_enable := '0'; + IF Auto_precharge(TO_INTEGER(Bank)) = '1' AND Write_precharge(TO_INTEGER(Bank)) = '1' THEN + RW_interrupt_write(TO_INTEGER(Bank)) := '1'; + END IF; + END IF; + + -- Read interrupt a Read (terminate Read after CL) + IF Data_out_enable = '1' THEN + IF Auto_precharge(TO_INTEGER(Bank)) = '1' AND Read_precharge(TO_INTEGER(Bank)) = '1' THEN + RW_interrupt_read(TO_INTEGER(Bank)) := '1'; + END IF; + END IF; + + -- Write Command + ELSIF Write_enable = '1' THEN + IF Addr(10) = '1' THEN + Command(0) := WRITE_A; + ELSE + Command(0) := WRITE; + END IF; + Col_addr (0) := TO_BITVECTOR (Addr(col_bits - 1 DOWNTO 0)); + Bank_addr (0) := TO_BITVECTOR (Ba); + + -- Write intterupt a Write (terminate Write immediately) + IF Data_in_enable = '1' THEN + Data_in_enable := '0'; + IF Auto_precharge(TO_INTEGER(Bank)) = '1' AND Write_precharge(TO_INTEGER(Bank)) = '1' THEN + RW_interrupt_write(TO_INTEGER(Bank)) := '1'; + END IF; + END IF; + + -- Write interrupt a Read (terminate Read immediately) + IF Data_out_enable = '1' THEN + Data_out_enable := '0'; + IF Auto_precharge(TO_INTEGER(Bank)) = '1' AND Read_precharge(TO_INTEGER(Bank)) = '1' THEN + RW_interrupt_read(TO_INTEGER(Bank)) := '1'; + END IF; + END IF; + END IF; + + -- Read or Write with Auto Precharge + IF Addr(10) = '1' THEN + Auto_precharge (TO_INTEGER(Ba)) := '1'; + Count_precharge (TO_INTEGER(Ba)) := 0; + IF Read_enable = '1' THEN + Read_precharge (TO_INTEGER(Ba)) := '1'; + ELSIF Write_enable = '1' THEN + Write_precharge (TO_INTEGER(Ba)) := '1'; + END IF; + END IF; + END IF; + + -- Read with AutoPrecharge Calculation + -- The device start internal precharge when: + -- 1. BL/2 cycles after command + -- and 2. Meet tRAS requirement + -- or 3. Interrupt by a Read or Write (with or without Auto Precharge) + IF ((Auto_precharge(0) = '1') AND (Read_precharge(0) = '1')) THEN + IF (((NOW - RAS_chk0 >= tRAS) AND + ((Burst_length_1 = '1' AND Count_precharge(0) >= 1) OR + (Burst_length_2 = '1' AND Count_precharge(0) >= 2) OR + (Burst_length_4 = '1' AND Count_precharge(0) >= 4) OR + (Burst_length_8 = '1' AND Count_precharge(0) >= 8))) OR + (RW_interrupt_read(0) = '1')) THEN + Pc_b0 := '1'; + Act_b0 := '0'; + RP_chk0 := NOW; + Auto_precharge(0) := '0'; + Read_precharge(0) := '0'; + RW_interrupt_read(0) := '0'; + END IF; + END IF; + IF ((Auto_precharge(1) = '1') AND (Read_precharge(1) = '1')) THEN + IF (((NOW - RAS_chk1 >= tRAS) AND + ((Burst_length_1 = '1' AND Count_precharge(1) >= 1) OR + (Burst_length_2 = '1' AND Count_precharge(1) >= 2) OR + (Burst_length_4 = '1' AND Count_precharge(1) >= 4) OR + (Burst_length_8 = '1' AND Count_precharge(1) >= 8))) OR + (RW_interrupt_read(1) = '1')) THEN + Pc_b1 := '1'; + Act_b1 := '0'; + RP_chk1 := NOW; + Auto_precharge(1) := '0'; + Read_precharge(1) := '0'; + RW_interrupt_read(1) := '0'; + END IF; + END IF; + IF ((Auto_precharge(2) = '1') AND (Read_precharge(2) = '1')) THEN + IF (((NOW - RAS_chk2 >= tRAS) AND + ((Burst_length_1 = '1' AND Count_precharge(2) >= 1) OR + (Burst_length_2 = '1' AND Count_precharge(2) >= 2) OR + (Burst_length_4 = '1' AND Count_precharge(2) >= 4) OR + (Burst_length_8 = '1' AND Count_precharge(2) >= 8))) OR + (RW_interrupt_read(2) = '1')) THEN + Pc_b2 := '1'; + Act_b2 := '0'; + RP_chk2 := NOW; + Auto_precharge(2) := '0'; + Read_precharge(2) := '0'; + RW_interrupt_read(2) := '0'; + END IF; + END IF; + IF ((Auto_precharge(3) = '1') AND (Read_precharge(3) = '1')) THEN + IF (((NOW - RAS_chk3 >= tRAS) AND + ((Burst_length_1 = '1' AND Count_precharge(3) >= 1) OR + (Burst_length_2 = '1' AND Count_precharge(3) >= 2) OR + (Burst_length_4 = '1' AND Count_precharge(3) >= 4) OR + (Burst_length_8 = '1' AND Count_precharge(3) >= 8))) OR + (RW_interrupt_read(3) = '1')) THEN + Pc_b3 := '1'; + Act_b3 := '0'; + RP_chk3 := NOW; + Auto_precharge(3) := '0'; + Read_precharge(3) := '0'; + RW_interrupt_read(3) := '0'; + END IF; + END IF; + + -- Write with AutoPrecharge Calculation + -- The device start internal precharge when: + -- 1. tWR cycles after command + -- and 2. Meet tRAS requirement + -- or 3. Interrupt by a Read or Write (with or without Auto Precharge) + IF ((Auto_precharge(0) = '1') AND (Write_precharge(0) = '1')) THEN + IF (((NOW - RAS_chk0 >= tRAS) AND + (((Burst_length_1 = '1' OR Write_burst_mode = '1' ) AND Count_precharge(0) >= 2) OR + (Burst_length_2 = '1' AND Count_precharge(0) >= 3) OR + (Burst_length_4 = '1' AND Count_precharge(0) >= 5) OR + (Burst_length_8 = '1' AND Count_precharge(0) >= 9))) OR + (RW_interrupt_write(0) = '1' AND WR_chk(0) >= 3)) THEN + Pc_b0 := '1'; + Act_b0 := '0'; + RP_chk0 := NOW; + Auto_precharge(0) := '0'; + Write_precharge(0) := '0'; + RW_interrupt_write(0) := '0'; + END IF; + END IF; + IF ((Auto_precharge(1) = '1') AND (Write_precharge(1) = '1')) THEN + IF (((NOW - RAS_chk1 >= tRAS) AND + (((Burst_length_1 = '1' OR Write_burst_mode = '1' ) AND Count_precharge(1) >= 2) OR + (Burst_length_2 = '1' AND Count_precharge(1) >= 3) OR + (Burst_length_4 = '1' AND Count_precharge(1) >= 5) OR + (Burst_length_8 = '1' AND Count_precharge(1) >= 9))) OR + (RW_interrupt_write(1) = '1' AND WR_chk(1) >= 3)) THEN + Pc_b1 := '1'; + Act_b1 := '0'; + RP_chk1 := NOW; + Auto_precharge(1) := '0'; + Write_precharge(1) := '0'; + RW_interrupt_write(1) := '0'; + END IF; + END IF; + IF ((Auto_precharge(2) = '1') AND (Write_precharge(2) = '1')) THEN + IF (((NOW - RAS_chk2 >= tRAS) AND + (((Burst_length_1 = '1' OR Write_burst_mode = '1' ) AND Count_precharge(2) >= 2) OR + (Burst_length_2 = '1' AND Count_precharge(2) >= 3) OR + (Burst_length_4 = '1' AND Count_precharge(2) >= 5) OR + (Burst_length_8 = '1' AND Count_precharge(2) >= 9))) OR + (RW_interrupt_write(2) = '1' AND WR_chk(2) >= 3)) THEN + Pc_b2 := '1'; + Act_b2 := '0'; + RP_chk2 := NOW; + Auto_precharge(2) := '0'; + Write_precharge(2) := '0'; + RW_interrupt_write(2) := '0'; + END IF; + END IF; + IF ((Auto_precharge(3) = '1') AND (Write_precharge(3) = '1')) THEN + IF (((NOW - RAS_chk3 >= tRAS) AND + (((Burst_length_1 = '1' OR Write_burst_mode = '1' ) AND Count_precharge(3) >= 2) OR + (Burst_length_2 = '1' AND Count_precharge(3) >= 3) OR + (Burst_length_4 = '1' AND Count_precharge(3) >= 5) OR + (Burst_length_8 = '1' AND Count_precharge(3) >= 9))) OR + (RW_interrupt_write(3) = '1' AND WR_chk(3) >= 3)) THEN + Pc_b3 := '1'; + Act_b3 := '0'; + RP_chk3 := NOW; + Auto_precharge(3) := '0'; + Write_precharge(3) := '0'; + RW_interrupt_write(3) := '0'; + END IF; + END IF; + + -- Internal Precharge or Bst + IF Command(0) = PRECH THEN -- Terminate a read if same bank or all banks + IF Bank_precharge(0) = Bank OR A10_precharge(0) = '1' THEN + IF Data_out_enable = '1' THEN + Data_out_enable := '0'; + END IF; + END IF; + ELSIF Command(0) = BST THEN -- Terminate a read immediately + IF Data_out_enable = '1' THEN + Data_out_enable := '0'; + END IF; + END IF; + + IF Data_out_enable = '0' THEN + Dq <= TRANSPORT (OTHERS => 'Z') AFTER tOH; + END IF; + + -- Detect Read or Write Command + IF Command(0) = READ OR Command(0) = READ_A THEN + Bank := Bank_addr (0); + Col := Col_addr (0); + Col_brst := Col_addr (0); + IF Bank_addr (0) = "00" THEN + Row := B0_row_addr; + ELSIF Bank_addr (0) = "01" THEN + Row := B1_row_addr; + ELSIF Bank_addr (0) = "10" THEN + Row := B2_row_addr; + ELSE + Row := B3_row_addr; + END IF; + Burst_counter := 0; + Data_in_enable := '0'; + Data_out_enable := '1'; + ELSIF Command(0) = WRITE OR Command(0) = WRITE_A THEN + Bank := Bank_addr(0); + Col := Col_addr(0); + Col_brst := Col_addr(0); + IF Bank_addr (0) = "00" THEN + Row := B0_row_addr; + ELSIF Bank_addr (0) = "01" THEN + Row := B1_row_addr; + ELSIF Bank_addr (0) = "10" THEN + Row := B2_row_addr; + ELSE + Row := B3_row_addr; + END IF; + Burst_counter := 0; + Data_in_enable := '1'; + Data_out_enable := '0'; + END IF; + + -- DQ (Driver / Receiver) + Row_index := TO_INTEGER (Row); + Col_index := TO_INTEGER (Col); + IF Data_in_enable = '1' THEN + IF Dqm /= "11" THEN + Init_mem (Bank, Row_index); + IF Bank = "00" THEN + Dq_temp := Bank0 (Row_index) (Col_index); + IF Dqm = "01" THEN + Dq_temp (15 DOWNTO 8) := TO_BITVECTOR (Dq (15 DOWNTO 8)); + ELSIF Dqm = "10" THEN + Dq_temp (7 DOWNTO 0) := TO_BITVECTOR (Dq (7 DOWNTO 0)); + ELSE + Dq_temp (15 DOWNTO 0) := TO_BITVECTOR (Dq (15 DOWNTO 0)); + END IF; + Bank0 (Row_index) (Col_index) := Dq_temp; + ELSIF Bank = "01" THEN + Dq_temp := Bank1 (Row_index) (Col_index); + IF Dqm = "01" THEN + Dq_temp (15 DOWNTO 8) := TO_BITVECTOR (Dq (15 DOWNTO 8)); + ELSIF Dqm = "10" THEN + Dq_temp (7 DOWNTO 0) := TO_BITVECTOR (Dq (7 DOWNTO 0)); + ELSE + Dq_temp (15 DOWNTO 0) := TO_BITVECTOR (Dq (15 DOWNTO 0)); + END IF; + Bank1 (Row_index) (Col_index) := Dq_temp; + ELSIF Bank = "10" THEN + Dq_temp := Bank2 (Row_index) (Col_index); + IF Dqm = "01" THEN + Dq_temp (15 DOWNTO 8) := TO_BITVECTOR (Dq (15 DOWNTO 8)); + ELSIF Dqm = "10" THEN + Dq_temp (7 DOWNTO 0) := TO_BITVECTOR (Dq (7 DOWNTO 0)); + ELSE + Dq_temp (15 DOWNTO 0) := TO_BITVECTOR (Dq (15 DOWNTO 0)); + END IF; + Bank2 (Row_index) (Col_index) := Dq_temp; + ELSIF Bank = "11" THEN + Dq_temp := Bank3 (Row_index) (Col_index); + IF Dqm = "01" THEN + Dq_temp (15 DOWNTO 8) := TO_BITVECTOR (Dq (15 DOWNTO 8)); + ELSIF Dqm = "10" THEN + Dq_temp (7 DOWNTO 0) := TO_BITVECTOR (Dq (7 DOWNTO 0)); + ELSE + Dq_temp (15 DOWNTO 0) := TO_BITVECTOR (Dq (15 DOWNTO 0)); + END IF; + Bank3 (Row_index) (Col_index) := Dq_temp; + END IF; + WR_chk(TO_INTEGER(Bank)) := 0; + END IF; + Burst_decode; + ELSIF Data_out_enable = '1' THEN + IF Dqm_reg0 /= "11" THEN + Init_mem (Bank, Row_index); + IF Bank = "00" THEN + Dq_temp (15 DOWNTO 0) := Bank0 (Row_index) (Col_index); + IF Dqm_reg0 = "00" THEN + Dq (15 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 0)) AFTER tAC; + ELSIF Dqm_reg0 = "01" THEN + Dq (15 DOWNTO 8) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 8)) AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + ELSIF Dqm_reg0 = "10" THEN + Dq (15 DOWNTO 8) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (7 DOWNTO 0)) AFTER tAC; + END IF; + ELSIF Bank = "01" THEN + Dq_temp (15 DOWNTO 0) := Bank1 (Row_index) (Col_index); + IF Dqm_reg0 = "00" THEN + Dq (15 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 0)) AFTER tAC; + ELSIF Dqm_reg0 = "01" THEN + Dq (15 DOWNTO 8) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 8)) AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + ELSIF Dqm_reg0 = "10" THEN + Dq (15 DOWNTO 8) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (7 DOWNTO 0)) AFTER tAC; + END IF; + ELSIF Bank = "10" THEN + Dq_temp (15 DOWNTO 0) := Bank2 (Row_index) (Col_index); + IF Dqm_reg0 = "00" THEN + Dq (15 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 0)) AFTER tAC; + ELSIF Dqm_reg0 = "01" THEN + Dq (15 DOWNTO 8) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 8)) AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + ELSIF Dqm_reg0 = "10" THEN + Dq (15 DOWNTO 8) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (7 DOWNTO 0)) AFTER tAC; + END IF; + ELSIF Bank = "11" THEN + Dq_temp (15 DOWNTO 0) := Bank3 (Row_index) (Col_index); + IF Dqm_reg0 = "00" THEN + Dq (15 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 0)) AFTER tAC; + ELSIF Dqm_reg0 = "01" THEN + Dq (15 DOWNTO 8) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (15 DOWNTO 8)) AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + ELSIF Dqm_reg0 = "10" THEN + Dq (15 DOWNTO 8) <= TRANSPORT (OTHERS => 'Z') AFTER tAC; + Dq (7 DOWNTO 0) <= TRANSPORT TO_STDLOGICVECTOR (Dq_temp (7 DOWNTO 0)) AFTER tAC; + END IF; + END IF; + ELSE + Dq <= TRANSPORT (OTHERS => 'Z') AFTER tHZ; + END IF; + Burst_decode; + END IF; + + -- Checking internal wires (Optional for debug purpose) + Pre_chk (0) <= Pc_b0; + Pre_chk (1) <= Pc_b1; + Pre_chk (2) <= Pc_b2; + Pre_chk (3) <= Pc_b3; + Act_chk (0) <= Act_b0; + Act_chk (1) <= Act_b1; + Act_chk (2) <= Act_b2; + Act_chk (3) <= Act_b3; + Dq_in_chk <= Data_in_enable; + Dq_out_chk <= Data_out_enable; + Bank_chk <= Bank; + Row_chk <= Row; + Col_chk <= Col; + END IF; + END PROCESS; + + + -- Clock timing checks + Clock_check : PROCESS + VARIABLE Clk_low, Clk_high : TIME := 0 ns; + BEGIN + WAIT ON Clk; + IF (Clk = '1' AND NOW >= 10 ns) THEN + ASSERT (NOW - Clk_low >= tCL) + REPORT "tCL violation" + SEVERITY WARNING; + ASSERT (NOW - Clk_high >= tCK) + REPORT "tCK violation" + SEVERITY WARNING; + Clk_high := NOW; + ELSIF (Clk = '0' AND NOW /= 0 ns) THEN + ASSERT (NOW - Clk_high >= tCH) + REPORT "tCH violation" + SEVERITY WARNING; + Clk_low := NOW; + END IF; + END PROCESS; + + -- Setup timing checks + Setup_check : PROCESS + BEGIN + WAIT ON Clk; + IF Clk = '1' THEN + ASSERT(Cke'LAST_EVENT >= tCKS) + REPORT "CKE Setup time violation -- tCKS" + SEVERITY WARNING; + ASSERT(Cs_n'LAST_EVENT >= tCMS) + REPORT "CS# Setup time violation -- tCMS" + SEVERITY WARNING; + ASSERT(Cas_n'LAST_EVENT >= tCMS) + REPORT "CAS# Setup time violation -- tCMS" + SEVERITY WARNING; + ASSERT(Ras_n'LAST_EVENT >= tCMS) + REPORT "RAS# Setup time violation -- tCMS" + SEVERITY WARNING; + ASSERT(We_n'LAST_EVENT >= tCMS) + REPORT "WE# Setup time violation -- tCMS" + SEVERITY WARNING; + ASSERT(Dqm'LAST_EVENT >= tCMS) + REPORT "DQM Setup time violation -- tCMS" + SEVERITY WARNING; + ASSERT(Addr'LAST_EVENT >= tAS) + REPORT "ADDR Setup time violation -- tAS" + SEVERITY WARNING; + ASSERT(Ba'LAST_EVENT >= tAS) + REPORT "BA Setup time violation -- tAS" + SEVERITY WARNING; + ASSERT(Dq'LAST_EVENT >= tDS) + REPORT "DQ Setup time violation -- tDS" + SEVERITY WARNING; + END IF; + END PROCESS; + + -- Hold timing checks + Hold_check : PROCESS + BEGIN + WAIT ON Clk'DELAYED (tCKH), Clk'DELAYED (tCMH), Clk'DELAYED (tAH), Clk'DELAYED (tDH); + IF Clk'DELAYED (tCKH) = '1' THEN + ASSERT(Cke'LAST_EVENT > tCKH) + REPORT "CKE Hold time violation -- tCKH" + SEVERITY WARNING; + END IF; + IF Clk'DELAYED (tCMH) = '1' THEN + ASSERT(Cs_n'LAST_EVENT > tCMH) + REPORT "CS# Hold time violation -- tCMH" + SEVERITY WARNING; + ASSERT(Cas_n'LAST_EVENT > tCMH) + REPORT "CAS# Hold time violation -- tCMH" + SEVERITY WARNING; + ASSERT(Ras_n'LAST_EVENT > tCMH) + REPORT "RAS# Hold time violation -- tCMH" + SEVERITY WARNING; + ASSERT(We_n'LAST_EVENT > tCMH) + REPORT "WE# Hold time violation -- tCMH" + SEVERITY WARNING; + ASSERT(Dqm'LAST_EVENT > tCMH) + REPORT "DQM Hold time violation -- tCMH" + SEVERITY WARNING; + END IF; + IF Clk'DELAYED (tAH) = '1' THEN + ASSERT(Addr'LAST_EVENT > tAH) + REPORT "ADDR Hold time violation -- tAH" + SEVERITY WARNING; + ASSERT(Ba'LAST_EVENT > tAH) + REPORT "BA Hold time violation -- tAH" + SEVERITY WARNING; + END IF; + IF Clk'DELAYED (tDH) = '1' THEN + ASSERT(Dq'LAST_EVENT > tDH) + REPORT "DQ Hold time violation -- tDH" + SEVERITY WARNING; + END IF; + END PROCESS; + +END behave; \ No newline at end of file diff --git a/peripherals/sdram/sim/mti_pkg.vhd b/peripherals/sdram/sim/mti_pkg.vhd new file mode 100644 index 00000000..54cd91bb --- /dev/null +++ b/peripherals/sdram/sim/mti_pkg.vhd @@ -0,0 +1,143 @@ +--***************************************************************************** +-- +-- Micron Semiconductor Products, Inc. +-- +-- Copyright 1997, Micron Semiconductor Products, Inc. +-- All rights reserved. +-- +--***************************************************************************** + +LIBRARY work; +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; + +PACKAGE mti_pkg IS + + FUNCTION TO_INTEGER (input : BIT) RETURN INTEGER; + FUNCTION TO_INTEGER (input : BIT_VECTOR) RETURN INTEGER; + FUNCTION TO_INTEGER (input : STD_LOGIC) RETURN INTEGER; + FUNCTION TO_INTEGER (input : STD_LOGIC_VECTOR) RETURN INTEGER; + PROCEDURE TO_BITVECTOR (VARIABLE input : IN INTEGER; VARIABLE output : OUT BIT_VECTOR); + +END mti_pkg; + +PACKAGE BODY mti_pkg IS + + -- Convert BIT to INTEGER + FUNCTION TO_INTEGER (input : BIT) RETURN INTEGER IS + VARIABLE result : INTEGER := 0; + VARIABLE weight : INTEGER := 1; + BEGIN + IF input = '1' THEN + result := weight; + ELSE + result := 0; -- if unknowns, default to logic 0 + END IF; + RETURN result; + END TO_INTEGER; + + -- Convert BIT_VECTOR to INTEGER + FUNCTION TO_INTEGER (input : BIT_VECTOR) RETURN INTEGER IS + VARIABLE result : INTEGER := 0; + VARIABLE weight : INTEGER := 1; + BEGIN + FOR i IN input'LOW TO input'HIGH LOOP + IF input(i) = '1' THEN + result := result + weight; + ELSE + result := result + 0; -- if unknowns, default to logic 0 + END IF; + weight := weight * 2; + END LOOP; + RETURN result; + END TO_INTEGER; + + -- Convert STD_LOGIC to INTEGER + FUNCTION TO_INTEGER (input : STD_LOGIC) RETURN INTEGER IS + VARIABLE result : INTEGER := 0; + VARIABLE weight : INTEGER := 1; + BEGIN + IF input = '1' THEN + result := weight; + ELSE + result := 0; -- if unknowns, default to logic 0 + END IF; + RETURN result; + END TO_INTEGER; + + -- Convert STD_LOGIC_VECTOR to INTEGER + FUNCTION TO_INTEGER (input : STD_LOGIC_VECTOR) RETURN INTEGER IS + VARIABLE result : INTEGER := 0; + VARIABLE weight : INTEGER := 1; + BEGIN + FOR i IN input'LOW TO input'HIGH LOOP + IF input(i) = '1' THEN + result := result + weight; + ELSE + result := result + 0; -- if unknowns, default to logic 0 + END IF; + weight := weight * 2; + END LOOP; + RETURN result; + END TO_INTEGER; + + -- Conver integer to bit_vector + PROCEDURE TO_BITVECTOR (VARIABLE input : IN INTEGER; VARIABLE output : OUT BIT_VECTOR) IS + VARIABLE work,offset,outputlen,j : INTEGER := 0; + BEGIN + --length of vector + IF output'LENGTH > 32 THEN + outputlen := 32; + offset := output'LENGTH - 32; + IF input >= 0 THEN + FOR i IN offset-1 DOWNTO 0 LOOP + output(output'HIGH - i) := '0'; + END LOOP; + ELSE + FOR i IN offset-1 DOWNTO 0 LOOP + output(output'HIGH - i) := '1'; + END LOOP; + END IF; + ELSE + outputlen := output'LENGTH; + END IF; + --positive value + IF (input >= 0) THEN + work := input; + j := outputlen - 1; + FOR i IN 1 to 32 LOOP + IF j >= 0 then + IF (work MOD 2) = 0 THEN + output(output'HIGH-j-offset) := '0'; + ELSE + output(output'HIGH-j-offset) := '1'; + END IF; + END IF; + work := work / 2; + j := j - 1; + END LOOP; + IF outputlen = 32 THEN + output(output'HIGH) := '0'; + END IF; + --negative value + ELSE + work := (-input) - 1; + j := outputlen - 1; + FOR i IN 1 TO 32 LOOP + IF j>= 0 THEN + IF (work MOD 2) = 0 THEN + output(output'HIGH-j-offset) := '1'; + ELSE + output(output'HIGH-j-offset) := '0'; + END IF; + END IF; + work := work / 2; + j := j - 1; + END LOOP; + IF outputlen = 32 THEN + output(output'HIGH) := '1'; + END IF; + END IF; + END TO_BITVECTOR; + +END mti_pkg; \ No newline at end of file diff --git a/peripherals/sdram/sint/de10_lite.ipregen.rpt b/peripherals/sdram/sint/de10_lite.ipregen.rpt new file mode 100644 index 00000000..99d47685 --- /dev/null +++ b/peripherals/sdram/sint/de10_lite.ipregen.rpt @@ -0,0 +1,68 @@ +IP Upgrade report for de10_lite +Mon Jul 8 11:04:27 2019 +Quartus Prime Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. IP Upgrade Summary + 3. Successfully Upgraded IP Components + 4. IP Upgrade Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 2018 Intel Corporation. All rights reserved. +Your use of Intel Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Intel Program License +Subscription Agreement, the Intel Quartus Prime License Agreement, +the Intel FPGA IP License Agreement, or other applicable license +agreement, including, without limitation, that your use is for +the sole purpose of programming logic devices manufactured by +Intel and sold by Intel or its authorized distributors. Please +refer to the applicable agreement for further details. + + + ++--------------------------------------------------------------------------------+ +; IP Upgrade Summary ; ++------------------------------+-------------------------------------------------+ +; IP Components Upgrade Status ; Passed - Mon Jul 8 11:04:27 2019 ; +; Quartus Prime Version ; 18.1.0 Build 625 09/12/2018 SJ Standard Edition ; +; Revision Name ; de10_lite ; +; Top-level Entity Name ; de10_lite ; +; Family ; MAX 10 ; ++------------------------------+-------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------+ +; Successfully Upgraded IP Components ; ++-------------+----------------+---------+----------------------+----------------------+-----------------+---------+ +; Entity Name ; Component Name ; Version ; Original Source File ; Generation File Path ; New Source File ; Message ; ++-------------+----------------+---------+----------------------+----------------------+-----------------+---------+ +; pll ; ALTPLL ; 17.1 ; ../pll/pll.qip ; ../pll/pll.vhd ; ../pll/pll.qip ; ; ++-------------+----------------+---------+----------------------+----------------------+-----------------+---------+ + + ++---------------------+ +; IP Upgrade Messages ; ++---------------------+ +Info (11902): Backing up file "../pll/pll.vhd" to "../pll/pll.BAK.vhd" +Info (11837): Started upgrading IP component ALTPLL with file "../pll/pll.vhd" +Info (11131): Completed upgrading IP component ALTPLL with file "../pll/pll.vhd" +Info (23030): Evaluation of Tcl script /home/xtarke/Data/Apps/intelFPGA/18.1/quartus/common/tcl/internal/ip_regen/ip_regen.tcl was successful +Info: Quartus Prime Shell was successful. 0 errors, 0 warnings + Info: Peak virtual memory: 1064 megabytes + Info: Processing ended: Mon Jul 8 11:04:27 2019 + Info: Elapsed time: 00:00:10 + Info: Total CPU time (on all processors): 00:00:28 + + diff --git a/peripherals/sdram/sint/de10_lite.qpf b/peripherals/sdram/sint/de10_lite.qpf new file mode 100644 index 00000000..2e37e9d1 --- /dev/null +++ b/peripherals/sdram/sint/de10_lite.qpf @@ -0,0 +1,31 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2015 Altera Corporation. All rights reserved. +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, the Altera Quartus II License Agreement, +# the Altera MegaCore Function License Agreement, or other +# applicable license agreement, including, without limitation, +# that your use is for the sole purpose of programming logic +# devices manufactured by Altera and sold by Altera or its +# authorized distributors. Please refer to the applicable +# agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition +# Date created = 18:49:34 June 20, 2019 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "15.0" +DATE = "18:49:34 June 20, 2019" + +# Revisions + +PROJECT_REVISION = "de10_lite" diff --git a/peripherals/sdram/sint/de10_lite.qsf b/peripherals/sdram/sint/de10_lite.qsf new file mode 100644 index 00000000..58d952af --- /dev/null +++ b/peripherals/sdram/sint/de10_lite.qsf @@ -0,0 +1,233 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2015 Altera Corporation. All rights reserved. +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, the Altera Quartus II License Agreement, +# the Altera MegaCore Function License Agreement, or other +# applicable license agreement, including, without limitation, +# that your use is for the sole purpose of programming logic +# devices manufactured by Altera and sold by Altera or its +# authorized distributors. Please refer to the applicable +# agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition +# Date created = 18:49:34 June 20, 2019 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# de10_lite_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "MAX 10" +set_global_assignment -name DEVICE 10M50DAF484C7G +set_global_assignment -name TOP_LEVEL_ENTITY de10_lite +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.0.0 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "18:49:34 JUNE 20, 2019" +set_global_assignment -name LAST_QUARTUS_VERSION "18.1.0 Standard Edition" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 +set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)" +set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name ENABLE_OCT_DONE ON +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 00000000 +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "SINGLE IMAGE WITH ERAM" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall +set_location_assignment PIN_N5 -to ADC_CLK_10 +set_location_assignment PIN_P11 -to MAX10_CLK1_50 +set_location_assignment PIN_N14 -to MAX10_CLK2_50 +set_location_assignment PIN_U17 -to DRAM_ADDR[0] +set_location_assignment PIN_W19 -to DRAM_ADDR[1] +set_location_assignment PIN_V18 -to DRAM_ADDR[2] +set_location_assignment PIN_U18 -to DRAM_ADDR[3] +set_location_assignment PIN_U19 -to DRAM_ADDR[4] +set_location_assignment PIN_T18 -to DRAM_ADDR[5] +set_location_assignment PIN_T19 -to DRAM_ADDR[6] +set_location_assignment PIN_R18 -to DRAM_ADDR[7] +set_location_assignment PIN_P18 -to DRAM_ADDR[8] +set_location_assignment PIN_P19 -to DRAM_ADDR[9] +set_location_assignment PIN_T20 -to DRAM_ADDR[10] +set_location_assignment PIN_P20 -to DRAM_ADDR[11] +set_location_assignment PIN_R20 -to DRAM_ADDR[12] +set_location_assignment PIN_T21 -to DRAM_BA[0] +set_location_assignment PIN_T22 -to DRAM_BA[1] +set_location_assignment PIN_U21 -to DRAM_CAS_N +set_location_assignment PIN_N22 -to DRAM_CKE +set_location_assignment PIN_L14 -to DRAM_CLK +set_location_assignment PIN_U20 -to DRAM_CS_N +set_location_assignment PIN_Y21 -to DRAM_DQ[0] +set_location_assignment PIN_Y20 -to DRAM_DQ[1] +set_location_assignment PIN_AA22 -to DRAM_DQ[2] +set_location_assignment PIN_AA21 -to DRAM_DQ[3] +set_location_assignment PIN_Y22 -to DRAM_DQ[4] +set_location_assignment PIN_W22 -to DRAM_DQ[5] +set_location_assignment PIN_W20 -to DRAM_DQ[6] +set_location_assignment PIN_V21 -to DRAM_DQ[7] +set_location_assignment PIN_P21 -to DRAM_DQ[8] +set_location_assignment PIN_J22 -to DRAM_DQ[9] +set_location_assignment PIN_H21 -to DRAM_DQ[10] +set_location_assignment PIN_H22 -to DRAM_DQ[11] +set_location_assignment PIN_G22 -to DRAM_DQ[12] +set_location_assignment PIN_G20 -to DRAM_DQ[13] +set_location_assignment PIN_G19 -to DRAM_DQ[14] +set_location_assignment PIN_F22 -to DRAM_DQ[15] +set_location_assignment PIN_V22 -to DRAM_LDQM +set_location_assignment PIN_U22 -to DRAM_RAS_N +set_location_assignment PIN_J21 -to DRAM_UDQM +set_location_assignment PIN_V20 -to DRAM_WE_N +set_location_assignment PIN_C14 -to HEX0[0] +set_location_assignment PIN_E15 -to HEX0[1] +set_location_assignment PIN_C15 -to HEX0[2] +set_location_assignment PIN_C16 -to HEX0[3] +set_location_assignment PIN_E16 -to HEX0[4] +set_location_assignment PIN_D17 -to HEX0[5] +set_location_assignment PIN_C17 -to HEX0[6] +set_location_assignment PIN_D15 -to HEX0[7] +set_location_assignment PIN_C18 -to HEX1[0] +set_location_assignment PIN_D18 -to HEX1[1] +set_location_assignment PIN_E18 -to HEX1[2] +set_location_assignment PIN_B16 -to HEX1[3] +set_location_assignment PIN_A17 -to HEX1[4] +set_location_assignment PIN_A18 -to HEX1[5] +set_location_assignment PIN_B17 -to HEX1[6] +set_location_assignment PIN_A16 -to HEX1[7] +set_location_assignment PIN_B20 -to HEX2[0] +set_location_assignment PIN_A20 -to HEX2[1] +set_location_assignment PIN_B19 -to HEX2[2] +set_location_assignment PIN_A21 -to HEX2[3] +set_location_assignment PIN_B21 -to HEX2[4] +set_location_assignment PIN_C22 -to HEX2[5] +set_location_assignment PIN_B22 -to HEX2[6] +set_location_assignment PIN_A19 -to HEX2[7] +set_location_assignment PIN_F21 -to HEX3[0] +set_location_assignment PIN_E22 -to HEX3[1] +set_location_assignment PIN_E21 -to HEX3[2] +set_location_assignment PIN_C19 -to HEX3[3] +set_location_assignment PIN_C20 -to HEX3[4] +set_location_assignment PIN_D19 -to HEX3[5] +set_location_assignment PIN_E17 -to HEX3[6] +set_location_assignment PIN_D22 -to HEX3[7] +set_location_assignment PIN_F18 -to HEX4[0] +set_location_assignment PIN_E20 -to HEX4[1] +set_location_assignment PIN_E19 -to HEX4[2] +set_location_assignment PIN_J18 -to HEX4[3] +set_location_assignment PIN_H19 -to HEX4[4] +set_location_assignment PIN_F19 -to HEX4[5] +set_location_assignment PIN_F20 -to HEX4[6] +set_location_assignment PIN_F17 -to HEX4[7] +set_location_assignment PIN_J20 -to HEX5[0] +set_location_assignment PIN_K20 -to HEX5[1] +set_location_assignment PIN_L18 -to HEX5[2] +set_location_assignment PIN_N18 -to HEX5[3] +set_location_assignment PIN_M20 -to HEX5[4] +set_location_assignment PIN_N19 -to HEX5[5] +set_location_assignment PIN_N20 -to HEX5[6] +set_location_assignment PIN_L19 -to HEX5[7] +set_location_assignment PIN_B8 -to KEY[0] +set_location_assignment PIN_A7 -to KEY[1] +set_location_assignment PIN_A8 -to LEDR[0] +set_location_assignment PIN_A9 -to LEDR[1] +set_location_assignment PIN_A10 -to LEDR[2] +set_location_assignment PIN_B10 -to LEDR[3] +set_location_assignment PIN_D13 -to LEDR[4] +set_location_assignment PIN_C13 -to LEDR[5] +set_location_assignment PIN_E14 -to LEDR[6] +set_location_assignment PIN_D14 -to LEDR[7] +set_location_assignment PIN_A11 -to LEDR[8] +set_location_assignment PIN_B11 -to LEDR[9] +set_location_assignment PIN_C10 -to SW[0] +set_location_assignment PIN_C11 -to SW[1] +set_location_assignment PIN_D12 -to SW[2] +set_location_assignment PIN_C12 -to SW[3] +set_location_assignment PIN_A12 -to SW[4] +set_location_assignment PIN_B12 -to SW[5] +set_location_assignment PIN_A13 -to SW[6] +set_location_assignment PIN_A14 -to SW[7] +set_location_assignment PIN_B14 -to SW[8] +set_location_assignment PIN_F15 -to SW[9] +set_location_assignment PIN_P1 -to VGA_B[0] +set_location_assignment PIN_T1 -to VGA_B[1] +set_location_assignment PIN_P4 -to VGA_B[2] +set_location_assignment PIN_N2 -to VGA_B[3] +set_location_assignment PIN_W1 -to VGA_G[0] +set_location_assignment PIN_T2 -to VGA_G[1] +set_location_assignment PIN_R2 -to VGA_G[2] +set_location_assignment PIN_R1 -to VGA_G[3] +set_location_assignment PIN_N3 -to VGA_HS +set_location_assignment PIN_AA1 -to VGA_R[0] +set_location_assignment PIN_V1 -to VGA_R[1] +set_location_assignment PIN_Y2 -to VGA_R[2] +set_location_assignment PIN_Y1 -to VGA_R[3] +set_location_assignment PIN_N1 -to VGA_VS +set_location_assignment PIN_AB16 -to GSENSOR_CS_N +set_location_assignment PIN_Y14 -to GSENSOR_INT[1] +set_location_assignment PIN_Y13 -to GSENSOR_INT[2] +set_location_assignment PIN_AB15 -to GSENSOR_SCLK +set_location_assignment PIN_V11 -to GSENSOR_SDI +set_location_assignment PIN_V12 -to GSENSOR_SDO +set_location_assignment PIN_AB5 -to ARDUINO_IO[0] +set_location_assignment PIN_AB6 -to ARDUINO_IO[1] +set_location_assignment PIN_AB7 -to ARDUINO_IO[2] +set_location_assignment PIN_AB8 -to ARDUINO_IO[3] +set_location_assignment PIN_AB9 -to ARDUINO_IO[4] +set_location_assignment PIN_Y10 -to ARDUINO_IO[5] +set_location_assignment PIN_AA11 -to ARDUINO_IO[6] +set_location_assignment PIN_AA12 -to ARDUINO_IO[7] +set_location_assignment PIN_AB17 -to ARDUINO_IO[8] +set_location_assignment PIN_AA17 -to ARDUINO_IO[9] +set_location_assignment PIN_AB19 -to ARDUINO_IO[10] +set_location_assignment PIN_AA19 -to ARDUINO_IO[11] +set_location_assignment PIN_Y19 -to ARDUINO_IO[12] +set_location_assignment PIN_AB20 -to ARDUINO_IO[13] +set_location_assignment PIN_AB21 -to ARDUINO_IO[14] +set_location_assignment PIN_AA20 -to ARDUINO_IO[15] +set_location_assignment PIN_F16 -to ARDUINO_RESET_N +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V" +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name QIP_FILE ../pll/pll.qip +set_global_assignment -name SDC_FILE de10_lite.sdc +set_global_assignment -name VHDL_FILE ../../../alu/alu_types.vhd +set_global_assignment -name VHDL_FILE ../../../alu/alu.vhd +set_global_assignment -name VHDL_FILE ../de10_lite.vhd +set_global_assignment -name VHDL_FILE ../../../alu/m/M_types.vhd +set_global_assignment -name VHDL_FILE ../../../alu/m/M.vhd +set_global_assignment -name VHDL_FILE ../../../memory/dmemory.vhd +set_global_assignment -name VHDL_FILE ../../../memory/iram_quartus.vhd +set_global_assignment -name QIP_FILE ../../../memory/iram_quartus.qip +set_global_assignment -name VHDL_FILE ../../../decoder/iregister.vhd +set_global_assignment -name VHDL_FILE ../../../decoder/decoder_types.vhd +set_global_assignment -name VHDL_FILE ../../../decoder/decoder.vhd +set_global_assignment -name VHDL_FILE ../../../core/core.vhd +set_global_assignment -name VHDL_FILE ../../../registers/register_file.vhd +set_global_assignment -name VHDL_FILE ../sdram_controller.vhd + +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/peripherals/sdram/sint/de10_lite.qws b/peripherals/sdram/sint/de10_lite.qws new file mode 100644 index 00000000..996fe0a5 Binary files /dev/null and b/peripherals/sdram/sint/de10_lite.qws differ diff --git a/peripherals/sdram/sint/de10_lite.sdc b/peripherals/sdram/sint/de10_lite.sdc new file mode 100644 index 00000000..7267c16e --- /dev/null +++ b/peripherals/sdram/sint/de10_lite.sdc @@ -0,0 +1,86 @@ +#************************************************************** +# This .sdc file is created by Terasic Tool. +# Users are recommended to modify this file to match users logic. +#************************************************************** + +#************************************************************** +# Create Clock +#************************************************************** +create_clock -period "10.0 MHz" [get_ports ADC_CLK_10] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK1_50] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK2_50] + +#************************************************************** +# Create Generated Clock +#************************************************************** +derive_pll_clocks + + + +#************************************************************** +# Set Clock Latency +#************************************************************** + + + +#************************************************************** +# Set Clock Uncertainty +#************************************************************** +derive_clock_uncertainty + + + +#************************************************************** +# Set Input Delay +#************************************************************** + + + +#************************************************************** +# Set Output Delay +#************************************************************** + + + +#************************************************************** +# Set Clock Groups +#************************************************************** + + + +#************************************************************** +# Set False Path +#************************************************************** + + + +#************************************************************** +# Set Multicycle Path +#************************************************************** + + + +#************************************************************** +# Set Maximum Delay +#************************************************************** + + + +#************************************************************** +# Set Minimum Delay +#************************************************************** + + + +#************************************************************** +# Set Input Transition +#************************************************************** + + + +#************************************************************** +# Set Load +#************************************************************** + + + diff --git a/peripherals/sdram/sint/de10_lite_assignment_defaults.qdf b/peripherals/sdram/sint/de10_lite_assignment_defaults.qdf new file mode 100644 index 00000000..d40b50e3 --- /dev/null +++ b/peripherals/sdram/sint/de10_lite_assignment_defaults.qdf @@ -0,0 +1,807 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2018 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Intel Program License +# Subscription Agreement, the Intel Quartus Prime License Agreement, +# the Intel FPGA IP License Agreement, or other applicable license +# agreement, including, without limitation, that your use is for +# the sole purpose of programming logic devices manufactured by +# Intel and sold by Intel or its authorized distributors. Please +# refer to the applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition +# Date created = 08:39:22 July 08, 2019 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus Prime software and is used +# to preserve global assignments across Quartus Prime versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name IP_COMPONENT_REPORT_HIERARCHY Off +set_global_assignment -name IP_COMPONENT_INTERNAL Off +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_POWER_ANALYZER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name FLOW_ENABLE_PARALLEL_MODULES On +set_global_assignment -name ENABLE_COMPACT_REPORT_TABLE Off +set_global_assignment -name REVISION_TYPE Base -family "Arria V" +set_global_assignment -name REVISION_TYPE Base -family "Stratix V" +set_global_assignment -name REVISION_TYPE Base -family "Arria V GZ" +set_global_assignment -name REVISION_TYPE Base -family "Cyclone V" +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name TDC_AGGRESSIVE_HOLD_CLOSURE_EFFORT Off +set_global_assignment -name ENABLE_HPS_INTERNAL_TIMING Off +set_global_assignment -name EMIF_SOC_PHYCLK_ADVANCE_MODELING Off +set_global_assignment -name USE_DLL_FREQUENCY_FOR_DQS_DELAY_CHAIN Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name TIMING_ANALYZER_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS On +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_DO_REPORT_TIMING Off +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_REPORT_NUM_WORST_CASE_TIMING_PATHS 100 +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone V" +set_global_assignment -name OPTIMIZATION_MODE Balanced +set_global_assignment -name ALLOW_REGISTER_MERGING On +set_global_assignment -name ALLOW_REGISTER_DUPLICATION On +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Cyclone 10 LP" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix IV" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV E" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Arria 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX II" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone V" +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name MLAB_ADD_TIMING_CONSTRAINTS_FOR_MIXED_PORT_FEED_THROUGH_MODE_SETTING_DONT_CARE Off +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name OCP_HW_EVAL -value OFF +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name FAMILY -value "Cyclone V" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name INFER_RAMS_FROM_RAW_LOGIC On +set_global_assignment -name PARALLEL_SYNTHESIS On +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name ALLOW_SHIFT_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "MAX 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix IV" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV E" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GX" +set_global_assignment -name REPORT_PARAMETER_SETTINGS On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS On +set_global_assignment -name REPORT_CONNECTIVITY_CHECKS On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone 10 LP" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV E" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix IV" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX II" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Cyclone V" +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_PROTECTED_REGISTERS_REPORTED 100 +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 5000 +set_global_assignment -name NUMBER_OF_SYNTHESIS_MIGRATION_ROWS 5000 +set_global_assignment -name SYNTHESIS_S10_MIGRATION_CHECKS Off +set_global_assignment -name NUMBER_OF_SWEPT_NODES_REPORTED 5000 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name DISABLE_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "MAX 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix IV" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV E" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GX" +set_global_assignment -name MAX_LABS "-1 (Unlimited)" +set_global_assignment -name RBCGEN_CRITICAL_WARNING_TO_ERROR On +set_global_assignment -name MAX_NUMBER_OF_REGISTERS_FROM_UNINFERRED_RAMS "-1 (Unlimited)" +set_global_assignment -name AUTO_PARALLEL_SYNTHESIS On +set_global_assignment -name PRPOF_ID Off +set_global_assignment -name DISABLE_DSP_NEGATE_INFERENCING Off +set_global_assignment -name REPORT_PARAMETER_SETTINGS_PRO On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS_PRO On +set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE Off +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name TXPMA_SLEW_RATE Low +set_global_assignment -name ADCE_ENABLED Auto +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS Off +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name PHYSICAL_SYNTHESIS Off +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name ENABLE_NCEO_OUTPUT Off +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "Single Image" +set_global_assignment -name CVP_MODE Off +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria 10" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Stratix V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V GZ" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Cyclone V" +set_global_assignment -name VID_OPERATION_MODE "PMBus Slave" +set_global_assignment -name USE_CONF_DONE AUTO +set_global_assignment -name USE_PWRMGT_SCL AUTO +set_global_assignment -name USE_PWRMGT_SDA AUTO +set_global_assignment -name USE_PWRMGT_ALERT AUTO +set_global_assignment -name USE_INIT_DONE AUTO +set_global_assignment -name USE_CVP_CONFDONE AUTO +set_global_assignment -name USE_SEU_ERROR AUTO +set_global_assignment -name RESERVE_AVST_CLK_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_VALID_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA15_THROUGH_DATA0_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name MAX10FPGA_CONFIGURATION_SCHEME "Internal Configuration" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_UNUSED_RX_CLOCK_WORKAROUND Off +set_global_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL Off +set_global_assignment -name IGNORE_HSSI_COLUMN_POWER_WHEN_PRESERVING_UNUSED_XCVR_CHANNELS On +set_global_assignment -name AUTO_RESERVE_CLKUSR_FOR_CALIBRATION On +set_global_assignment -name DEVICE_INITIALIZATION_CLOCK INIT_INTOSC +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name INIT_DONE_OPEN_DRAIN On +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA15_THROUGH_DATA8_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA5_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name ENABLE_CONFIGURATION_PINS On +set_global_assignment -name ENABLE_JTAG_PIN_SHARING Off +set_global_assignment -name ENABLE_NCE_PIN Off +set_global_assignment -name ENABLE_BOOT_SEL_PIN On +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name INTERNAL_SCRUBBING Off +set_global_assignment -name PR_ERROR_OPEN_DRAIN On +set_global_assignment -name PR_READY_OPEN_DRAIN On +set_global_assignment -name ENABLE_CVP_CONFDONE Off +set_global_assignment -name CVP_CONFDONE_OPEN_DRAIN On +set_global_assignment -name ENABLE_NCONFIG_FROM_CORE On +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "MAX 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "MAX 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix IV" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX II" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone V" +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix IV" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria 10" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix V" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria V GZ" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING Normal +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name PERIPHERY_TO_CORE_PLACEMENT_AND_ROUTING_OPTIMIZATION OFF +set_global_assignment -name RESERVE_ROUTING_OUTPUT_FLEXIBILITY Off +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name QII_AUTO_PACKED_REGISTERS Auto +set_global_assignment -name AUTO_PACKED_REGISTERS_MAX Auto +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone 10 LP" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix IV" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV E" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX II" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone V" +set_global_assignment -name AUTO_DELAY_CHAINS_FOR_HIGH_FANOUT_INPUT_PINS OFF +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION Auto +set_global_assignment -name ROUTER_REGISTER_DUPLICATION Auto +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Auto +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION On +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone 10 LP" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "MAX 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone IV E" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Stratix V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V GZ" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Cyclone V" +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria 10" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Stratix V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Cyclone IV GX" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V GZ" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Cyclone V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Arria II GX" +set_global_assignment -name M144K_BLOCK_READ_CLOCK_DUTY_CYCLE_DEPENDENCY Off +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name AUTO_C3_M9K_BIT_SKIP Off +set_global_assignment -name PR_DONE_OPEN_DRAIN On +set_global_assignment -name NCEO_OPEN_DRAIN On +set_global_assignment -name ENABLE_CRC_ERROR_PIN Off +set_global_assignment -name ENABLE_PR_PINS Off +set_global_assignment -name RESERVE_PR_PINS Off +set_global_assignment -name CONVERT_PR_WARNINGS_TO_ERRORS Off +set_global_assignment -name PR_PINS_OPEN_DRAIN Off +set_global_assignment -name CLAMPING_DIODE Off +set_global_assignment -name TRI_STATE_SPI_PINS Off +set_global_assignment -name UNUSED_TSD_PINS_GND Off +set_global_assignment -name IMPLEMENT_MLAB_IN_16_BIT_DEEP_MODE Off +set_global_assignment -name FORM_DDR_CLUSTERING_CLIQUE Off +set_global_assignment -name ALM_REGISTER_PACKING_EFFORT Medium +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION Off -family "Stratix IV" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria 10" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Stratix V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V GZ" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Cyclone V" +set_global_assignment -name RELATIVE_NEUTRON_FLUX 1.0 +set_global_assignment -name SEU_FIT_REPORT Off +set_global_assignment -name HYPER_RETIMER Off -family "Arria 10" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ADD_PIPELINING_MAX "-1" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ASYNCH_CLEAR Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_USER_PRESERVE_RESTRICTION Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_DSP_BLOCKS On +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_RAM_BLOCKS On +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE On +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone 10 LP" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX 10" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV E" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX V" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GZ" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV GX" +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name PWRMGT_SLAVE_DEVICE_TYPE "PV3102 or EM1130" +set_global_assignment -name PWRMGT_SLAVE_DEVICE0_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE1_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE2_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE3_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE4_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE5_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE6_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE7_ADDRESS 0000000 +set_global_assignment -name PWRMGT_VOLTAGE_OUTPUT_FORMAT "Auto discovery" +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_M 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_B 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_R 0 +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone 10 LP" +set_global_assignment -name ENABLE_OCT_DONE On -family "MAX 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV E" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Stratix V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V GZ" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria II GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone V" +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT OFF +set_global_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE Off +set_global_assignment -name ENABLE_AUTONOMOUS_PCIE_HIP Off +set_global_assignment -name ENABLE_ADV_SEU_DETECTION Off +set_global_assignment -name POR_SCHEME "Instant ON" +set_global_assignment -name EN_USER_IO_WEAK_PULLUP On +set_global_assignment -name EN_SPI_IO_WEAK_PULLUP On +set_global_assignment -name POF_VERIFY_PROTECT Off +set_global_assignment -name ENABLE_SPI_MODE_CHECK Off +set_global_assignment -name FORCE_SSMCLK_TO_ISMCLK On +set_global_assignment -name FALLBACK_TO_EXTERNAL_FLASH Off +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 0 +set_global_assignment -name GENERATE_PMSF_FILES On +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name HPS_EARLY_IO_RELEASE Off +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name POWER_HPS_ENABLE Off +set_global_assignment -name POWER_HPS_PROC_FREQ 0.0 +set_global_assignment -name ENABLE_SMART_VOLTAGE_ID Off +set_global_assignment -name IGNORE_PARTITIONS Off +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name RAPID_RECOMPILE_ASSIGNMENT_CHECKING On +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_ENABLE_IPUTF_MODE On -section_id ? +set_global_assignment -name EDA_NATIVELINK_PORTABLE_FILE_PATHS Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY OFF -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST Off -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_EXTENDED_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_IBIS_SPECIFICATION_VERSION 4p2 -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_PRESERVE_HIGH_SPEED_TILES On -section_id ? -entity ? +set_global_assignment -name PARTITION_IGNORE_SOURCE_FILE_CHANGES Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ALWAYS_USE_QXP_NETLIST Off -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS UPDATE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name ALLOW_MULTIPLE_PERSONAS Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ASD_REGION_ID 1 -section_id ? -entity ? +set_global_assignment -name CROSS_BOUNDARY_OPTIMIZATIONS Off -section_id ? -entity ? +set_global_assignment -name PROPAGATE_CONSTANTS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name PROPAGATE_INVERSIONS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name REMOVE_LOGIC_ON_UNCONNECTED_OUTPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_INPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_BIDIRS On -section_id ? -entity ? +set_global_assignment -name ABSORB_PATHS_FROM_OUTPUTS_TO_INPUTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_ENABLE_STRICT_PRESERVATION Off -section_id ? -entity ? diff --git a/peripherals/sdram/sint/de10_lite_description.txt b/peripherals/sdram/sint/de10_lite_description.txt new file mode 100644 index 00000000..e69de29b diff --git a/peripherals/sdram/testbench_sdram.do b/peripherals/sdram/testbench_sdram.do new file mode 100644 index 00000000..3900bedb --- /dev/null +++ b/peripherals/sdram/testbench_sdram.do @@ -0,0 +1,42 @@ +# cd C:/Users/Cleissom/eclipse-workspace/riscv-multicycle/sdram + +#Cria biblioteca do projeto +vlib work + +#compila projeto: todos os aquivo. Ordem é importante +vcom sdram_controller.vhd ./sim/mti_pkg.vhd ./sim/mt48lc8m16a2.vhd testbench_sdram.vhd + +#Simula +vsim -t ps work.testbench_sdram + +#Mosta forma de onda +view wave + +add wave -height 15 -divider "SDRAM" +add wave -label clk_sdram /clk_sdram +add wave -label chipselect_sdram /chipselect_sdram +add wave -label sdram_addr -radix hex /sdram_addr +add wave -label DRAM_ADDR -radix hex /DRAM_ADDR +add wave -label d_we /d_we +add wave -label sdram_d_rd /sdram_d_rd +add wave -label ddata_w -radix hex /ddata_w +add wave -label sdram_read -radix hex /sdram_read +add wave -label DRAM_DQ -radix hex /DRAM_DQ +add wave -label burst /burst +add wave -label mem_state /sdram_controller/mem_state +add wave -label d_read /sdram_controller/d_read + + +add wave -radix unsigned -label DRAM_ADDR /DRAM_ADDR +add wave -radix unsigned -label DRAM_CS_N /DRAM_CS_N +add wave -radix unsigned -label DRAM_CKE /DRAM_CKE +add wave -radix unsigned -label DRAM_RAS_N /DRAM_RAS_N +add wave -radix unsigned -label DRAM_CAS_N /DRAM_CAS_N +add wave -radix unsigned -label DRAM_WE_N /DRAM_WE_N +add wave -radix unsigned -label DRAM_DQ /DRAM_DQ + +#Simula até um 500ns +run 5000ns + +wave zoomfull +write wave wave.ps \ No newline at end of file diff --git a/peripherals/sdram/testbench_sdram.vhd b/peripherals/sdram/testbench_sdram.vhd new file mode 100644 index 00000000..f08dc31e --- /dev/null +++ b/peripherals/sdram/testbench_sdram.vhd @@ -0,0 +1,133 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity testbench_sdram is +end entity testbench_sdram; + +architecture RTL of testbench_sdram is + signal sdram_addr : STD_LOGIC_VECTOR(31 DOWNTO 0); + signal chipselect_sdram : STD_LOGIC; + signal clk_sdram : STD_LOGIC; + signal rst : STD_LOGIC; + signal d_we : STD_LOGIC; + signal sdram_d_rd : std_logic; + signal ddata_w : STD_LOGIC_VECTOR(31 DOWNTO 0); + signal burst : std_logic; + signal sdram_read : STD_LOGIC_VECTOR(15 DOWNTO 0); + signal waitrequest : std_logic; + signal DRAM_ADDR : std_logic_vector(12 downto 0); + signal DRAM_BA : std_logic_vector(1 downto 0); + signal DRAM_CAS_N : std_logic; + signal DRAM_CKE : std_logic; + signal DRAM_CLK : std_logic; + signal DRAM_CS_N : std_logic; + signal DRAM_DQ : std_logic_vector(15 downto 0); + signal DRAM_DQM : std_logic_vector(1 downto 0); + signal DRAM_RAS_N : std_logic; + signal DRAM_WE_N : std_logic; + +begin + + -- SDRAM instatiation + sdram_controller : entity work.sdram_controller + port map( + address => sdram_addr, + byteenable => "11", + chipselect => chipselect_sdram, + clk => clk_sdram, + clken => '1', + reset => rst, + reset_req => rst, + write => d_we, + read => sdram_d_rd, + writedata => ddata_w, + burst => burst, + -- outputs: + readdata => sdram_read, + waitrequest => waitrequest, + DRAM_ADDR => DRAM_ADDR, + DRAM_BA => DRAM_BA, + DRAM_CAS_N => DRAM_CAS_N, + DRAM_CKE => DRAM_CKE, + DRAM_CLK => DRAM_CLK, + DRAM_CS_N => DRAM_CS_N, + DRAM_DQ => DRAM_DQ, + DRAM_DQM => DRAM_DQM, + DRAM_RAS_N => DRAM_RAS_N, + DRAM_WE_N => DRAM_WE_N + ); + + -- SDRAM model instatiation + sdram : entity work.mt48lc8m16a2 + generic map( + addr_bits => 13 + ) + port map( + Dq => DRAM_DQ, + Addr => DRAM_ADDR, + Ba => DRAM_BA, + Clk => clk_sdram, + Cke => DRAM_CKE, + Cs_n => DRAM_CS_N, + Ras_n => DRAM_RAS_N, + Cas_n => DRAM_CAS_N, + We_n => DRAM_WE_N, + Dqm => DRAM_DQM + ); + + clock_driver : process + constant period : time := 10 ns; + begin + clk_sdram <= '0'; + wait for period / 2; + clk_sdram <= '1'; + wait for period / 2; + end process clock_driver; + + end_gen : process + begin + sdram_addr <= x"00000000"; + chipselect_sdram <= '1'; + rst <= '1'; + d_we <= '0'; + sdram_d_rd <= '0'; + ddata_w <= x"00000004"; + burst <= '0'; + wait for 10 ns; + rst <= '0'; + wait for 200 ns; + burst <= '1'; + wait for 100 ns; + + d_we <= '1'; + ddata_w <= x"00000000"; + sdram_addr <= x"00000000"; + wait for 100 ns; + d_we <= '0'; + wait for 100 ns; + + d_we <= '1'; + ddata_w <= x"00000001"; + sdram_addr <= x"00000001"; + wait for 100 ns; + d_we <= '0'; + wait for 100 ns; + + d_we <= '1'; + ddata_w <= x"00000003"; + sdram_addr <= x"00000003"; + wait for 100 ns; + d_we <= '0'; + wait for 100 ns; + + sdram_d_rd <= '1'; + sdram_addr <= x"00000000"; + wait for 100 ns; + sdram_d_rd <= '1'; + wait for 100 ns; + + wait; + end process; + +end architecture RTL; diff --git a/peripherals/vga/README.md b/peripherals/vga/README.md new file mode 100644 index 00000000..a3b6ecba --- /dev/null +++ b/peripherals/vga/README.md @@ -0,0 +1,29 @@ +# VGA + +O controlador VGA está padronizado para a resolução 800x600 a 60Hz. +Para alterar a resolução, instanciar o controlador conforme 'timings' dos [Padrões VGA](http://tinyvga.com/vga-timing). +O controlador VGA necessita de uma RAM Dual Channel e de um PLL de 40MHz, conforme esquemático: +![RTL](https://drive.google.com/file/d/1flgcUsC5myYFzawOMX-cEWR_tmpqch94/view?usp=sharing) + +## Integração com o CORE +Para o CORE não gravar duplicado (na RAM de dados e na RAM da VGA), é necessário incluir o código seguinte e ligar os respectivos sinais as memórias: +```vhdl +process(dcsel, d_we) +begin + if dcsel = "11" then + wren_vga <= d_we; -- write to vga + wren_dm <= '0'; + else + wren_vga <= '0'; + wren_dm <= d_we; -- write do data memory + end if; +end process; +``` + +## To Do +Se a memória não suportar dados de um frame inteiro, o controlador irá repetir os dados da memória. Porém, com uma memória de 8kb é possível fazer uma imagem de 90x90 pixels. Os arquivos 'reescale' intentam fazer isso, incrementando o endereço da memória somente quando o pixel está dentro da linha e da coluna, e colocando preto quando estiver fora. + +### Links Úteis +[Controlador VGA VHDL](https://www.digikey.com/eewiki/pages/viewpage.action?pageId=15925278) + + diff --git a/peripherals/vga/RTL/VGA-rtl.png b/peripherals/vga/RTL/VGA-rtl.png new file mode 100644 index 00000000..8bab94a2 Binary files /dev/null and b/peripherals/vga/RTL/VGA-rtl.png differ diff --git a/peripherals/vga/Rescale/hw_image_generator_reescale.vhd b/peripherals/vga/Rescale/hw_image_generator_reescale.vhd new file mode 100644 index 00000000..0414cdd1 --- /dev/null +++ b/peripherals/vga/Rescale/hw_image_generator_reescale.vhd @@ -0,0 +1,34 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +ENTITY hw_image_generator_reescale IS + GENERIC( + column_size : INTEGER := 90; + row_size : INTEGER := 90 + ); + PORT( + disp_ena : IN STD_LOGIC; --display enable ('1' = display time, '0' = blanking time) + rgb_in : in std_logic_vector(15 downto 0); -- RAM data in + row : in integer; + column : in integer; + red : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); --red magnitude output to R2R + green : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); --green magnitude output to R2R + blue : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0')); --blue magnitude output to R2R +END hw_image_generator_reescale; + +ARCHITECTURE behavior OF hw_image_generator_reescale IS +BEGIN + PROCESS(disp_ena, rgb_in, column, row) + BEGIN + IF (disp_ena /= '0' and column '0'); + green <= (OTHERS => '0'); + blue <= (OTHERS => '0'); + END IF; + + END PROCESS; +END behavior; diff --git a/peripherals/vga/Rescale/vga_addr_rescale.vhd b/peripherals/vga/Rescale/vga_addr_rescale.vhd new file mode 100644 index 00000000..f87084b2 --- /dev/null +++ b/peripherals/vga/Rescale/vga_addr_rescale.vhd @@ -0,0 +1,36 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity vga_addr_rescale is + GENERIC( + column_size : INTEGER := 90; + row_size : INTEGER := 90 + ); + port( + rst : in std_logic; + column : in integer; + row : in integer; + addr_rescale : out std_logic_vector(12 downto 0) + ); +end entity vga_addr_rescale; + +architecture RTL of vga_addr_rescale is + +begin + proc : process(column, row, rst) + variable addr_count : INTEGER RANGE 0 TO row_size * column_size := 0; + begin + if rst = '1' then + addr_count := 0; + elsif column = 0 and row= 0 then + addr_count := 0; + elsif row < row_size then + if column < column_size then + addr_count := addr_count + 1; + end if; + end if; + addr_rescale <= Std_logic_vector(To_unsigned(addr_count, addr_rescale'length)); + end process; + +end architecture RTL; diff --git a/peripherals/vga/de10_lite.vhd b/peripherals/vga/de10_lite.vhd new file mode 100644 index 00000000..8466858c --- /dev/null +++ b/peripherals/vga/de10_lite.vhd @@ -0,0 +1,303 @@ +------------------------------------------------------------------- +-- Name : de0_lite.vhd +-- Author : +-- Version : 0.1 +-- Copyright : Departamento de Eletrônica, Florianópolis, IFSC +-- Description : Projeto base DE10-Lite +------------------------------------------------------------------- +LIBRARY ieee; +USE IEEE.STD_LOGIC_1164.ALL; +use ieee.numeric_std.all; + +use work.decoder_types.all; + +entity de10_lite is + generic ( + --! Num of 32-bits memory words + IMEMORY_WORDS : integer := 1024; --!= 4K (1024 * 4) bytes + DMEMORY_WORDS : integer := 4096 --!= 8k (512 * 2) bytes + ); + + + port ( + ---------- CLOCK ---------- + ADC_CLK_10: in std_logic; + MAX10_CLK1_50: in std_logic; + MAX10_CLK2_50: in std_logic; + + ----------- SDRAM ------------ + DRAM_ADDR: out std_logic_vector (12 downto 0); + DRAM_BA: out std_logic_vector (1 downto 0); + DRAM_CAS_N: out std_logic; + DRAM_CKE: out std_logic; + DRAM_CLK: out std_logic; + DRAM_CS_N: out std_logic; + DRAM_DQ: inout std_logic_vector(15 downto 0); + DRAM_LDQM: out std_logic; + DRAM_RAS_N: out std_logic; + DRAM_UDQM: out std_logic; + DRAM_WE_N: out std_logic; + + ----------- SEG7 ------------ + HEX0: out std_logic_vector(7 downto 0); + HEX1: out std_logic_vector(7 downto 0); + HEX2: out std_logic_vector(7 downto 0); + HEX3: out std_logic_vector(7 downto 0); + HEX4: out std_logic_vector(7 downto 0); + HEX5: out std_logic_vector(7 downto 0); + + ----------- KEY ------------ + KEY: in std_logic_vector(1 downto 0); + + ----------- LED ------------ + LEDR: out std_logic_vector(9 downto 0); + + ----------- SW ------------ + SW: in std_logic_vector(9 downto 0); + + ----------- VGA ------------ + VGA_B: out std_logic_vector(3 downto 0); + VGA_G: out std_logic_vector(3 downto 0); + VGA_HS: out std_logic; + VGA_R: out std_logic_vector(3 downto 0); + VGA_VS: out std_logic; + + ----------- Accelerometer ------------ + GSENSOR_CS_N: out std_logic; + GSENSOR_INT: in std_logic_vector(2 downto 1); + GSENSOR_SCLK: out std_logic; + GSENSOR_SDI: inout std_logic; + GSENSOR_SDO: inout std_logic; + + ----------- Arduino ------------ + ARDUINO_IO: inout std_logic_vector(15 downto 0); + ARDUINO_RESET_N: inout std_logic + ); +end entity; + + + +architecture rtl of de10_lite is + + signal clk : std_logic; + signal rst : std_logic; + + -- Instruction bus signals + signal idata : std_logic_vector(31 downto 0); + signal iaddress : integer range 0 to IMEMORY_WORDS-1 := 0; + signal address : std_logic_vector (9 downto 0); + + -- Data bus signals + signal daddress : integer range 0 to DMEMORY_WORDS-1; + signal ddata_r : std_logic_vector(31 downto 0); + signal ddata_w : std_logic_vector(31 downto 0); + signal dmask : std_logic_vector(3 downto 0); + signal dcsel : std_logic_vector(1 downto 0); + signal d_we : std_logic := '0'; + + signal ddata_r_mem : std_logic_vector(31 downto 0); + signal d_rd : std_logic; + + -- I/O signals + signal input_in : std_logic_vector(31 downto 0); + + -- PLL signals + signal locked_sig : std_logic; + + -- CPU state signals + signal state : cpu_state_t; + + -- VGA Signals + signal clk_vga : STD_LOGIC; + signal disp_ena : STD_LOGIC; + signal addr_vga : std_logic_vector(12 downto 0); + signal rgb_in : std_logic_vector(15 downto 0); + signal wren_dm : std_logic; + signal wren_vga : std_logic; + signal vgaaddrwr : std_logic_vector(12 downto 0); + +begin + + pll_inst: entity work.pll + port map( + areset => rst, + inclk0 => MAX10_CLK1_50, + c0 => clk, + c1 => clk_vga, + locked => locked_sig + ); + + rst <= SW(9); + + -- Dummy out signals + DRAM_DQ <= ddata_r(15 downto 0); + ARDUINO_IO <= ddata_r(31 downto 16); + LEDR(9) <= SW(9); + DRAM_ADDR(9 downto 0) <= address; + + -- IMem shoud be read from instruction and data buses + -- Not enough RAM ports for instruction bus, data bus and in-circuit programming + process(d_rd, dcsel, daddress, iaddress) + begin + if (d_rd = '1') and (dcsel = "00") then + address <= std_logic_vector(to_unsigned(daddress,10)); + else + address <= std_logic_vector(to_unsigned(iaddress,10)); + end if; + end process; + + -- 32-bits x 1024 words quartus RAM (dual port: portA -> riscV, portB -> In-System Mem Editor + iram_quartus_inst: entity work.iram_quartus + port map( + address => address, + byteena => "1111", + clock => clk, + data => (others => '0'), + wren => '0', + q => idata + ); + + process(dcsel, d_we) + begin + if dcsel = "11" then + wren_vga <= d_we; -- write to vga + wren_dm <= '0'; + else + wren_vga <= '0'; + wren_dm <= d_we; -- write do data memory + end if; + end process; + + -- Data Memory RAM + dmem: entity work.dmemory + generic map( + MEMORY_WORDS => DMEMORY_WORDS + ) + port map( + rst => rst, + clk => clk, + data => ddata_w, + address => daddress, + we => wren_dm, + csel => dcsel(0), + dmask => dmask, + q => ddata_r_mem + ); + + vgaaddrwr <= Std_logic_vector(To_unsigned(daddress,13)); + + vgamem : entity work.ram_vga + port map( + data => ddata_w(15 downto 0), + rdaddress => addr_vga, + rdclock => clk_vga, + wraddress => vgaaddrwr, + wrclock => clk, + wren => wren_vga, + q => rgb_in + ); + + vgactrl: entity work.vga_controller + port map( + pixel_clk => clk_vga, + reset => rst, + h_sync => VGA_HS, + v_sync => VGA_VS, + disp_ena => disp_ena, + column => open, + row => open, + addr => addr_vga, + n_blank => open, + n_sync => open + ); + vgaimg: entity work.hw_image_generator + port map( + disp_ena => disp_ena, + rgb_in => rgb_in, + red => VGA_R, + green => VGA_G, + blue => VGA_B + ); + + -- Address space (check sections.ld) and chip select: + -- 0x0000000000 -> 0b000 0000 0000 0000 0000 0000 0000 + -- 0x0002000000 -> 0b010 0000 0000 0000 0000 0000 0000 + -- 0x0004000000 -> 0b100 0000 0000 0000 0000 0000 0000 + -- 0x0006000000 -> 0b110 0000 0000 0000 0000 0000 0000 + with dcsel select + ddata_r <= idata when "00", + ddata_r_mem when "01", + input_in when "10", + (others => '0') when others; + + -- Softcore instatiation + myRisc: entity work.core + generic map( + IMEMORY_WORDS => IMEMORY_WORDS, + DMEMORY_WORDS => DMEMORY_WORDS + ) + port map( + clk => clk, + rst => rst, + iaddress => iaddress, + idata => idata, + daddress => daddress, + ddata_r => ddata_r, + ddata_w => ddata_w, + d_we => d_we, + d_rd => d_rd, + dcsel => dcsel, + dmask => dmask, + state => state + ); + + -- Output register (Dummy LED blinky) + process(clk, rst) + begin + if rst = '1' then + LEDR(3 downto 0) <= (others => '0'); + HEX0 <= (others => '1'); + HEX1 <= (others => '1'); + HEX2 <= (others => '1'); + HEX3 <= (others => '1'); + HEX4 <= (others => '1'); + HEX5 <= (others => '1'); + else + if rising_edge(clk) then + if (d_we = '1') and (dcsel = "10")then + -- ToDo: Simplify compartors + -- ToDo: Maybe use byte addressing? + -- x"01" (word addressing) is x"04" (byte addressing) + if to_unsigned(daddress, 32)(8 downto 0) = x"01" then + LEDR(4 downto 0) <= ddata_w(4 downto 0); + elsif to_unsigned(daddress, 32)(8 downto 0) = x"02" then + HEX0 <= ddata_w(7 downto 0); + HEX1 <= ddata_w(15 downto 8); + HEX2 <= ddata_w(23 downto 16); + HEX3 <= ddata_w(31 downto 24); + -- HEX4 <= ddata_w(7 downto 0); + -- HEX5 <= ddata_w(7 downto 0); + end if; + end if; + end if; + end if; + end process; + + + -- Input register + process(clk, rst) + begin + if rst = '1' then + input_in <= (others => '0'); + else + if rising_edge(clk) then + if (d_rd = '1') and (dcsel = "10") then + input_in(4 downto 0) <= SW(4 downto 0); + end if; + end if; + end if; + end process; + + +end; + diff --git a/peripherals/vga/hw_image_generator.vhd b/peripherals/vga/hw_image_generator.vhd new file mode 100644 index 00000000..35d93abb --- /dev/null +++ b/peripherals/vga/hw_image_generator.vhd @@ -0,0 +1,28 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +ENTITY hw_image_generator IS + PORT( + disp_ena : IN STD_LOGIC; --display enable ('1' = display time, '0' = blanking time) + rgb_in : in std_logic_vector(15 downto 0); -- RAM data in + red : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); --red magnitude output to R2R + green : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); --green magnitude output to R2R + blue : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0')); --blue magnitude output to R2R +END hw_image_generator; + +ARCHITECTURE behavior OF hw_image_generator IS +BEGIN + PROCESS(disp_ena, rgb_in) + BEGIN + IF (disp_ena = '1') THEN --display time + red <= rgb_in(3 downto 0); + green <= rgb_in(7 downto 4); + blue <= rgb_in(11 downto 8); + ELSE --blanking time + red <= (OTHERS => '0'); + green <= (OTHERS => '0'); + blue <= (OTHERS => '0'); + END IF; + + END PROCESS; +END behavior; diff --git a/peripherals/vga/pll/pll.cmp b/peripherals/vga/pll/pll.cmp new file mode 100644 index 00000000..a23e8447 --- /dev/null +++ b/peripherals/vga/pll/pll.cmp @@ -0,0 +1,25 @@ +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +component pll + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +end component; diff --git a/peripherals/vga/pll/pll.ppf b/peripherals/vga/pll/pll.ppf new file mode 100644 index 00000000..e107b0ee --- /dev/null +++ b/peripherals/vga/pll/pll.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/peripherals/vga/pll/pll.qip b/peripherals/vga/pll/pll.qip new file mode 100644 index 00000000..c051426a --- /dev/null +++ b/peripherals/vga/pll/pll.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "18.1" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"] diff --git a/peripherals/vga/pll/pll.vhd b/peripherals/vga/pll/pll.vhd new file mode 100644 index 00000000..ae1d3fda --- /dev/null +++ b/peripherals/vga/pll/pll.vhd @@ -0,0 +1,399 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: pll.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY pll IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END pll; + + +ARCHITECTURE SYN OF pll IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire6_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire6_bv(0 DOWNTO 0) <= "0"; + sub_wire6 <= To_stdlogicvector(sub_wire6_bv); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + locked <= sub_wire3; + sub_wire4 <= inclk0; + sub_wire5 <= sub_wire6(0 DOWNTO 0) & sub_wire4; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 50, + clk0_duty_cycle => 50, + clk0_multiply_by => 1, + clk0_phase_shift => "0", + clk1_divide_by => 5, + clk1_duty_cycle => 50, + clk1_multiply_by => 4, + clk1_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 20000, + intended_device_family => "MAX 10", + lpm_hint => "CBX_MODULE_PREFIX=pll", + lpm_type => "altpll", + operation_mode => "NORMAL", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_UNUSED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire5, + clk => sub_wire0, + locked => sub_wire3 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "1.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "40.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "1.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "40.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK4 STRING "0" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.vhd FALSE +-- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/peripherals/vga/ram_vga.cmp b/peripherals/vga/ram_vga.cmp new file mode 100644 index 00000000..aeebaaf2 --- /dev/null +++ b/peripherals/vga/ram_vga.cmp @@ -0,0 +1,27 @@ +--Copyright (C) 2017 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +component ram_vga + PORT + ( + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + rdaddress : IN STD_LOGIC_VECTOR (12 DOWNTO 0); + rdclock : IN STD_LOGIC ; + wraddress : IN STD_LOGIC_VECTOR (12 DOWNTO 0); + wrclock : IN STD_LOGIC := '1'; + wren : IN STD_LOGIC := '0'; + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +end component; diff --git a/peripherals/vga/ram_vga.qip b/peripherals/vga/ram_vga.qip new file mode 100644 index 00000000..5e3e965e --- /dev/null +++ b/peripherals/vga/ram_vga.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 2-PORT" +set_global_assignment -name IP_TOOL_VERSION "17.1" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "ram_vga.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "ram_vga.cmp"] diff --git a/peripherals/vga/ram_vga.vhd b/peripherals/vga/ram_vga.vhd new file mode 100644 index 00000000..da6583b1 --- /dev/null +++ b/peripherals/vga/ram_vga.vhd @@ -0,0 +1,198 @@ +-- megafunction wizard: %RAM: 2-PORT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: ram_vga.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 17.1.0 Build 590 10/25/2017 SJ Lite Edition +-- ************************************************************ + + +--Copyright (C) 2017 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.altera_mf_components.all; + +ENTITY ram_vga IS + PORT + ( + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + rdaddress : IN STD_LOGIC_VECTOR (12 DOWNTO 0); + rdclock : IN STD_LOGIC ; + wraddress : IN STD_LOGIC_VECTOR (12 DOWNTO 0); + wrclock : IN STD_LOGIC := '1'; + wren : IN STD_LOGIC := '0'; + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END ram_vga; + + +ARCHITECTURE SYN OF ram_vga IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); + +BEGIN + q <= sub_wire0(15 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_aclr_b => "NONE", + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_b => "BYPASS", + intended_device_family => "MAX 10", + lpm_type => "altsyncram", + numwords_a => 8192, + numwords_b => 8192, + operation_mode => "DUAL_PORT", + outdata_aclr_b => "NONE", + outdata_reg_b => "UNREGISTERED", + power_up_uninitialized => "FALSE", + widthad_a => 13, + widthad_b => 13, + width_a => 16, + width_b => 16, + width_byteena_a => 1 + ) + PORT MAP ( + address_a => wraddress, + address_b => rdaddress, + clock0 => wrclock, + clock1 => rdclock, + data_a => data, + wren_a => wren, + q_b => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "1" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_B" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "131072" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "vga.hex" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "0" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "3" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGrren NUMERIC "1" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "16" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "16" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "16" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "16" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: ADDRESS_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "8192" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "8192" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "UNREGISTERED" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "13" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "13" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "16" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "16" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL "data[15..0]" +-- Retrieval info: USED_PORT: q 0 0 16 0 OUTPUT NODEFVAL "q[15..0]" +-- Retrieval info: USED_PORT: rdaddress 0 0 13 0 INPUT NODEFVAL "rdaddress[12..0]" +-- Retrieval info: USED_PORT: rdclock 0 0 0 0 INPUT NODEFVAL "rdclock" +-- Retrieval info: USED_PORT: wraddress 0 0 13 0 INPUT NODEFVAL "wraddress[12..0]" +-- Retrieval info: USED_PORT: wrclock 0 0 0 0 INPUT VCC "wrclock" +-- Retrieval info: USED_PORT: wren 0 0 0 0 INPUT GND "wren" +-- Retrieval info: CONNECT: @address_a 0 0 13 0 wraddress 0 0 13 0 +-- Retrieval info: CONNECT: @address_b 0 0 13 0 rdaddress 0 0 13 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 wrclock 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 rdclock 0 0 0 0 +-- Retrieval info: CONNECT: @data_a 0 0 16 0 data 0 0 16 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 16 0 @q_b 0 0 16 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram_vga.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram_vga.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram_vga.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram_vga.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram_vga_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/peripherals/vga/sint/db/de10_lite.db_info b/peripherals/vga/sint/db/de10_lite.db_info new file mode 100644 index 00000000..7e4ab3b9 --- /dev/null +++ b/peripherals/vga/sint/db/de10_lite.db_info @@ -0,0 +1,3 @@ +Quartus_Version = Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition +Version_Index = 486699264 +Creation_Time = Mon Jul 8 16:21:27 2019 diff --git a/peripherals/vga/sint/de10_lite.ipregen.rpt b/peripherals/vga/sint/de10_lite.ipregen.rpt new file mode 100644 index 00000000..443f4822 --- /dev/null +++ b/peripherals/vga/sint/de10_lite.ipregen.rpt @@ -0,0 +1,68 @@ +IP Upgrade report for de10_lite +Mon Jul 8 14:08:52 2019 +Quartus Prime Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. IP Upgrade Summary + 3. Successfully Upgraded IP Components + 4. IP Upgrade Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 2018 Intel Corporation. All rights reserved. +Your use of Intel Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Intel Program License +Subscription Agreement, the Intel Quartus Prime License Agreement, +the Intel FPGA IP License Agreement, or other applicable license +agreement, including, without limitation, that your use is for +the sole purpose of programming logic devices manufactured by +Intel and sold by Intel or its authorized distributors. Please +refer to the applicable agreement for further details. + + + ++--------------------------------------------------------------------------------+ +; IP Upgrade Summary ; ++------------------------------+-------------------------------------------------+ +; IP Components Upgrade Status ; Passed - Mon Jul 8 14:08:52 2019 ; +; Quartus Prime Version ; 18.1.0 Build 625 09/12/2018 SJ Standard Edition ; +; Revision Name ; de10_lite ; +; Top-level Entity Name ; de10_lite ; +; Family ; MAX 10 ; ++------------------------------+-------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------+ +; Successfully Upgraded IP Components ; ++-------------+----------------+---------+----------------------+----------------------+-----------------+---------+ +; Entity Name ; Component Name ; Version ; Original Source File ; Generation File Path ; New Source File ; Message ; ++-------------+----------------+---------+----------------------+----------------------+-----------------+---------+ +; pll ; ALTPLL ; 17.1 ; ../pll/pll.qip ; ../pll/pll.vhd ; ../pll/pll.qip ; ; ++-------------+----------------+---------+----------------------+----------------------+-----------------+---------+ + + ++---------------------+ +; IP Upgrade Messages ; ++---------------------+ +Info (11902): Backing up file "../pll/pll.vhd" to "../pll/pll.BAK.vhd" +Info (11837): Started upgrading IP component ALTPLL with file "../pll/pll.vhd" +Info (11131): Completed upgrading IP component ALTPLL with file "../pll/pll.vhd" +Info (23030): Evaluation of Tcl script /home/xtarke/Data/Apps/intelFPGA/18.1/quartus/common/tcl/internal/ip_regen/ip_regen.tcl was successful +Info: Quartus Prime Shell was successful. 0 errors, 0 warnings + Info: Peak virtual memory: 1072 megabytes + Info: Processing ended: Mon Jul 8 14:08:52 2019 + Info: Elapsed time: 00:00:10 + Info: Total CPU time (on all processors): 00:00:28 + + diff --git a/peripherals/vga/sint/de10_lite.qpf b/peripherals/vga/sint/de10_lite.qpf new file mode 100644 index 00000000..2e37e9d1 --- /dev/null +++ b/peripherals/vga/sint/de10_lite.qpf @@ -0,0 +1,31 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2015 Altera Corporation. All rights reserved. +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, the Altera Quartus II License Agreement, +# the Altera MegaCore Function License Agreement, or other +# applicable license agreement, including, without limitation, +# that your use is for the sole purpose of programming logic +# devices manufactured by Altera and sold by Altera or its +# authorized distributors. Please refer to the applicable +# agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition +# Date created = 18:49:34 June 20, 2019 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "15.0" +DATE = "18:49:34 June 20, 2019" + +# Revisions + +PROJECT_REVISION = "de10_lite" diff --git a/peripherals/vga/sint/de10_lite.qsf b/peripherals/vga/sint/de10_lite.qsf new file mode 100644 index 00000000..2e19a916 --- /dev/null +++ b/peripherals/vga/sint/de10_lite.qsf @@ -0,0 +1,238 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2015 Altera Corporation. All rights reserved. +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, the Altera Quartus II License Agreement, +# the Altera MegaCore Function License Agreement, or other +# applicable license agreement, including, without limitation, +# that your use is for the sole purpose of programming logic +# devices manufactured by Altera and sold by Altera or its +# authorized distributors. Please refer to the applicable +# agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition +# Date created = 18:49:34 June 20, 2019 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# de10_lite_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "MAX 10" +set_global_assignment -name DEVICE 10M50DAF484C7G +set_global_assignment -name TOP_LEVEL_ENTITY de10_lite +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.0.0 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "18:49:34 JUNE 20, 2019" +set_global_assignment -name LAST_QUARTUS_VERSION "18.1.0 Standard Edition" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 +set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)" +set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name ENABLE_OCT_DONE ON +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 00000000 +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "SINGLE IMAGE WITH ERAM" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall +set_location_assignment PIN_N5 -to ADC_CLK_10 +set_location_assignment PIN_P11 -to MAX10_CLK1_50 +set_location_assignment PIN_N14 -to MAX10_CLK2_50 +set_location_assignment PIN_U17 -to DRAM_ADDR[0] +set_location_assignment PIN_W19 -to DRAM_ADDR[1] +set_location_assignment PIN_V18 -to DRAM_ADDR[2] +set_location_assignment PIN_U18 -to DRAM_ADDR[3] +set_location_assignment PIN_U19 -to DRAM_ADDR[4] +set_location_assignment PIN_T18 -to DRAM_ADDR[5] +set_location_assignment PIN_T19 -to DRAM_ADDR[6] +set_location_assignment PIN_R18 -to DRAM_ADDR[7] +set_location_assignment PIN_P18 -to DRAM_ADDR[8] +set_location_assignment PIN_P19 -to DRAM_ADDR[9] +set_location_assignment PIN_T20 -to DRAM_ADDR[10] +set_location_assignment PIN_P20 -to DRAM_ADDR[11] +set_location_assignment PIN_R20 -to DRAM_ADDR[12] +set_location_assignment PIN_T21 -to DRAM_BA[0] +set_location_assignment PIN_T22 -to DRAM_BA[1] +set_location_assignment PIN_U21 -to DRAM_CAS_N +set_location_assignment PIN_N22 -to DRAM_CKE +set_location_assignment PIN_L14 -to DRAM_CLK +set_location_assignment PIN_U20 -to DRAM_CS_N +set_location_assignment PIN_Y21 -to DRAM_DQ[0] +set_location_assignment PIN_Y20 -to DRAM_DQ[1] +set_location_assignment PIN_AA22 -to DRAM_DQ[2] +set_location_assignment PIN_AA21 -to DRAM_DQ[3] +set_location_assignment PIN_Y22 -to DRAM_DQ[4] +set_location_assignment PIN_W22 -to DRAM_DQ[5] +set_location_assignment PIN_W20 -to DRAM_DQ[6] +set_location_assignment PIN_V21 -to DRAM_DQ[7] +set_location_assignment PIN_P21 -to DRAM_DQ[8] +set_location_assignment PIN_J22 -to DRAM_DQ[9] +set_location_assignment PIN_H21 -to DRAM_DQ[10] +set_location_assignment PIN_H22 -to DRAM_DQ[11] +set_location_assignment PIN_G22 -to DRAM_DQ[12] +set_location_assignment PIN_G20 -to DRAM_DQ[13] +set_location_assignment PIN_G19 -to DRAM_DQ[14] +set_location_assignment PIN_F22 -to DRAM_DQ[15] +set_location_assignment PIN_V22 -to DRAM_LDQM +set_location_assignment PIN_U22 -to DRAM_RAS_N +set_location_assignment PIN_J21 -to DRAM_UDQM +set_location_assignment PIN_V20 -to DRAM_WE_N +set_location_assignment PIN_C14 -to HEX0[0] +set_location_assignment PIN_E15 -to HEX0[1] +set_location_assignment PIN_C15 -to HEX0[2] +set_location_assignment PIN_C16 -to HEX0[3] +set_location_assignment PIN_E16 -to HEX0[4] +set_location_assignment PIN_D17 -to HEX0[5] +set_location_assignment PIN_C17 -to HEX0[6] +set_location_assignment PIN_D15 -to HEX0[7] +set_location_assignment PIN_C18 -to HEX1[0] +set_location_assignment PIN_D18 -to HEX1[1] +set_location_assignment PIN_E18 -to HEX1[2] +set_location_assignment PIN_B16 -to HEX1[3] +set_location_assignment PIN_A17 -to HEX1[4] +set_location_assignment PIN_A18 -to HEX1[5] +set_location_assignment PIN_B17 -to HEX1[6] +set_location_assignment PIN_A16 -to HEX1[7] +set_location_assignment PIN_B20 -to HEX2[0] +set_location_assignment PIN_A20 -to HEX2[1] +set_location_assignment PIN_B19 -to HEX2[2] +set_location_assignment PIN_A21 -to HEX2[3] +set_location_assignment PIN_B21 -to HEX2[4] +set_location_assignment PIN_C22 -to HEX2[5] +set_location_assignment PIN_B22 -to HEX2[6] +set_location_assignment PIN_A19 -to HEX2[7] +set_location_assignment PIN_F21 -to HEX3[0] +set_location_assignment PIN_E22 -to HEX3[1] +set_location_assignment PIN_E21 -to HEX3[2] +set_location_assignment PIN_C19 -to HEX3[3] +set_location_assignment PIN_C20 -to HEX3[4] +set_location_assignment PIN_D19 -to HEX3[5] +set_location_assignment PIN_E17 -to HEX3[6] +set_location_assignment PIN_D22 -to HEX3[7] +set_location_assignment PIN_F18 -to HEX4[0] +set_location_assignment PIN_E20 -to HEX4[1] +set_location_assignment PIN_E19 -to HEX4[2] +set_location_assignment PIN_J18 -to HEX4[3] +set_location_assignment PIN_H19 -to HEX4[4] +set_location_assignment PIN_F19 -to HEX4[5] +set_location_assignment PIN_F20 -to HEX4[6] +set_location_assignment PIN_F17 -to HEX4[7] +set_location_assignment PIN_J20 -to HEX5[0] +set_location_assignment PIN_K20 -to HEX5[1] +set_location_assignment PIN_L18 -to HEX5[2] +set_location_assignment PIN_N18 -to HEX5[3] +set_location_assignment PIN_M20 -to HEX5[4] +set_location_assignment PIN_N19 -to HEX5[5] +set_location_assignment PIN_N20 -to HEX5[6] +set_location_assignment PIN_L19 -to HEX5[7] +set_location_assignment PIN_B8 -to KEY[0] +set_location_assignment PIN_A7 -to KEY[1] +set_location_assignment PIN_A8 -to LEDR[0] +set_location_assignment PIN_A9 -to LEDR[1] +set_location_assignment PIN_A10 -to LEDR[2] +set_location_assignment PIN_B10 -to LEDR[3] +set_location_assignment PIN_D13 -to LEDR[4] +set_location_assignment PIN_C13 -to LEDR[5] +set_location_assignment PIN_E14 -to LEDR[6] +set_location_assignment PIN_D14 -to LEDR[7] +set_location_assignment PIN_A11 -to LEDR[8] +set_location_assignment PIN_B11 -to LEDR[9] +set_location_assignment PIN_C10 -to SW[0] +set_location_assignment PIN_C11 -to SW[1] +set_location_assignment PIN_D12 -to SW[2] +set_location_assignment PIN_C12 -to SW[3] +set_location_assignment PIN_A12 -to SW[4] +set_location_assignment PIN_B12 -to SW[5] +set_location_assignment PIN_A13 -to SW[6] +set_location_assignment PIN_A14 -to SW[7] +set_location_assignment PIN_B14 -to SW[8] +set_location_assignment PIN_F15 -to SW[9] +set_location_assignment PIN_P1 -to VGA_B[0] +set_location_assignment PIN_T1 -to VGA_B[1] +set_location_assignment PIN_P4 -to VGA_B[2] +set_location_assignment PIN_N2 -to VGA_B[3] +set_location_assignment PIN_W1 -to VGA_G[0] +set_location_assignment PIN_T2 -to VGA_G[1] +set_location_assignment PIN_R2 -to VGA_G[2] +set_location_assignment PIN_R1 -to VGA_G[3] +set_location_assignment PIN_N3 -to VGA_HS +set_location_assignment PIN_AA1 -to VGA_R[0] +set_location_assignment PIN_V1 -to VGA_R[1] +set_location_assignment PIN_Y2 -to VGA_R[2] +set_location_assignment PIN_Y1 -to VGA_R[3] +set_location_assignment PIN_N1 -to VGA_VS +set_location_assignment PIN_AB16 -to GSENSOR_CS_N +set_location_assignment PIN_Y14 -to GSENSOR_INT[1] +set_location_assignment PIN_Y13 -to GSENSOR_INT[2] +set_location_assignment PIN_AB15 -to GSENSOR_SCLK +set_location_assignment PIN_V11 -to GSENSOR_SDI +set_location_assignment PIN_V12 -to GSENSOR_SDO +set_location_assignment PIN_AB5 -to ARDUINO_IO[0] +set_location_assignment PIN_AB6 -to ARDUINO_IO[1] +set_location_assignment PIN_AB7 -to ARDUINO_IO[2] +set_location_assignment PIN_AB8 -to ARDUINO_IO[3] +set_location_assignment PIN_AB9 -to ARDUINO_IO[4] +set_location_assignment PIN_Y10 -to ARDUINO_IO[5] +set_location_assignment PIN_AA11 -to ARDUINO_IO[6] +set_location_assignment PIN_AA12 -to ARDUINO_IO[7] +set_location_assignment PIN_AB17 -to ARDUINO_IO[8] +set_location_assignment PIN_AA17 -to ARDUINO_IO[9] +set_location_assignment PIN_AB19 -to ARDUINO_IO[10] +set_location_assignment PIN_AA19 -to ARDUINO_IO[11] +set_location_assignment PIN_Y19 -to ARDUINO_IO[12] +set_location_assignment PIN_AB20 -to ARDUINO_IO[13] +set_location_assignment PIN_AB21 -to ARDUINO_IO[14] +set_location_assignment PIN_AA20 -to ARDUINO_IO[15] +set_location_assignment PIN_F16 -to ARDUINO_RESET_N +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V" +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name VHDL_FILE ../hw_image_generator.vhd +set_global_assignment -name VHDL_FILE ../vga_controller.vhd +set_global_assignment -name QIP_FILE ../pll/pll.qip +set_global_assignment -name VHDL_FILE ../ram_vga.vhd +set_global_assignment -name QIP_FILE ../ram_vga.qip +set_global_assignment -name VHDL_FILE ../de10_lite.vhd +set_global_assignment -name SDC_FILE de10_lite.sdc +set_global_assignment -name VHDL_FILE ../../../alu/alu_types.vhd +set_global_assignment -name VHDL_FILE ../../../alu/alu.vhd +set_global_assignment -name VHDL_FILE ../../../alu/m/M_types.vhd +set_global_assignment -name VHDL_FILE ../../../alu/m/M.vhd +set_global_assignment -name VHDL_FILE ../../../memory/dmemory.vhd +set_global_assignment -name VHDL_FILE ../../../memory/iram_quartus.vhd +set_global_assignment -name QIP_FILE ../../../memory/iram_quartus.qip +set_global_assignment -name VHDL_FILE ../../../decoder/iregister.vhd +set_global_assignment -name VHDL_FILE ../../../decoder/decoder_types.vhd +set_global_assignment -name VHDL_FILE ../../../decoder/decoder.vhd +set_global_assignment -name VHDL_FILE ../../../core/core.vhd +set_global_assignment -name VHDL_FILE ../../../registers/register_file.vhd + + + +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/peripherals/vga/sint/de10_lite.sdc b/peripherals/vga/sint/de10_lite.sdc new file mode 100644 index 00000000..7267c16e --- /dev/null +++ b/peripherals/vga/sint/de10_lite.sdc @@ -0,0 +1,86 @@ +#************************************************************** +# This .sdc file is created by Terasic Tool. +# Users are recommended to modify this file to match users logic. +#************************************************************** + +#************************************************************** +# Create Clock +#************************************************************** +create_clock -period "10.0 MHz" [get_ports ADC_CLK_10] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK1_50] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK2_50] + +#************************************************************** +# Create Generated Clock +#************************************************************** +derive_pll_clocks + + + +#************************************************************** +# Set Clock Latency +#************************************************************** + + + +#************************************************************** +# Set Clock Uncertainty +#************************************************************** +derive_clock_uncertainty + + + +#************************************************************** +# Set Input Delay +#************************************************************** + + + +#************************************************************** +# Set Output Delay +#************************************************************** + + + +#************************************************************** +# Set Clock Groups +#************************************************************** + + + +#************************************************************** +# Set False Path +#************************************************************** + + + +#************************************************************** +# Set Multicycle Path +#************************************************************** + + + +#************************************************************** +# Set Maximum Delay +#************************************************************** + + + +#************************************************************** +# Set Minimum Delay +#************************************************************** + + + +#************************************************************** +# Set Input Transition +#************************************************************** + + + +#************************************************************** +# Set Load +#************************************************************** + + + diff --git a/peripherals/vga/sint/de10_lite_assignment_defaults.qdf b/peripherals/vga/sint/de10_lite_assignment_defaults.qdf new file mode 100644 index 00000000..d40b50e3 --- /dev/null +++ b/peripherals/vga/sint/de10_lite_assignment_defaults.qdf @@ -0,0 +1,807 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2018 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Intel Program License +# Subscription Agreement, the Intel Quartus Prime License Agreement, +# the Intel FPGA IP License Agreement, or other applicable license +# agreement, including, without limitation, that your use is for +# the sole purpose of programming logic devices manufactured by +# Intel and sold by Intel or its authorized distributors. Please +# refer to the applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition +# Date created = 08:39:22 July 08, 2019 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus Prime software and is used +# to preserve global assignments across Quartus Prime versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name IP_COMPONENT_REPORT_HIERARCHY Off +set_global_assignment -name IP_COMPONENT_INTERNAL Off +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_POWER_ANALYZER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name FLOW_ENABLE_PARALLEL_MODULES On +set_global_assignment -name ENABLE_COMPACT_REPORT_TABLE Off +set_global_assignment -name REVISION_TYPE Base -family "Arria V" +set_global_assignment -name REVISION_TYPE Base -family "Stratix V" +set_global_assignment -name REVISION_TYPE Base -family "Arria V GZ" +set_global_assignment -name REVISION_TYPE Base -family "Cyclone V" +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name TDC_AGGRESSIVE_HOLD_CLOSURE_EFFORT Off +set_global_assignment -name ENABLE_HPS_INTERNAL_TIMING Off +set_global_assignment -name EMIF_SOC_PHYCLK_ADVANCE_MODELING Off +set_global_assignment -name USE_DLL_FREQUENCY_FOR_DQS_DELAY_CHAIN Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name TIMING_ANALYZER_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS On +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_DO_REPORT_TIMING Off +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_REPORT_NUM_WORST_CASE_TIMING_PATHS 100 +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone V" +set_global_assignment -name OPTIMIZATION_MODE Balanced +set_global_assignment -name ALLOW_REGISTER_MERGING On +set_global_assignment -name ALLOW_REGISTER_DUPLICATION On +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Cyclone 10 LP" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix IV" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV E" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Arria 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX II" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone V" +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name MLAB_ADD_TIMING_CONSTRAINTS_FOR_MIXED_PORT_FEED_THROUGH_MODE_SETTING_DONT_CARE Off +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name OCP_HW_EVAL -value OFF +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name FAMILY -value "Cyclone V" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name INFER_RAMS_FROM_RAW_LOGIC On +set_global_assignment -name PARALLEL_SYNTHESIS On +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name ALLOW_SHIFT_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "MAX 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix IV" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV E" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GX" +set_global_assignment -name REPORT_PARAMETER_SETTINGS On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS On +set_global_assignment -name REPORT_CONNECTIVITY_CHECKS On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone 10 LP" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV E" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix IV" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX II" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Cyclone V" +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_PROTECTED_REGISTERS_REPORTED 100 +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 5000 +set_global_assignment -name NUMBER_OF_SYNTHESIS_MIGRATION_ROWS 5000 +set_global_assignment -name SYNTHESIS_S10_MIGRATION_CHECKS Off +set_global_assignment -name NUMBER_OF_SWEPT_NODES_REPORTED 5000 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name DISABLE_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "MAX 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix IV" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV E" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GX" +set_global_assignment -name MAX_LABS "-1 (Unlimited)" +set_global_assignment -name RBCGEN_CRITICAL_WARNING_TO_ERROR On +set_global_assignment -name MAX_NUMBER_OF_REGISTERS_FROM_UNINFERRED_RAMS "-1 (Unlimited)" +set_global_assignment -name AUTO_PARALLEL_SYNTHESIS On +set_global_assignment -name PRPOF_ID Off +set_global_assignment -name DISABLE_DSP_NEGATE_INFERENCING Off +set_global_assignment -name REPORT_PARAMETER_SETTINGS_PRO On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS_PRO On +set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE Off +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name TXPMA_SLEW_RATE Low +set_global_assignment -name ADCE_ENABLED Auto +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS Off +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name PHYSICAL_SYNTHESIS Off +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name ENABLE_NCEO_OUTPUT Off +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "Single Image" +set_global_assignment -name CVP_MODE Off +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria 10" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Stratix V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V GZ" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Cyclone V" +set_global_assignment -name VID_OPERATION_MODE "PMBus Slave" +set_global_assignment -name USE_CONF_DONE AUTO +set_global_assignment -name USE_PWRMGT_SCL AUTO +set_global_assignment -name USE_PWRMGT_SDA AUTO +set_global_assignment -name USE_PWRMGT_ALERT AUTO +set_global_assignment -name USE_INIT_DONE AUTO +set_global_assignment -name USE_CVP_CONFDONE AUTO +set_global_assignment -name USE_SEU_ERROR AUTO +set_global_assignment -name RESERVE_AVST_CLK_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_VALID_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA15_THROUGH_DATA0_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name MAX10FPGA_CONFIGURATION_SCHEME "Internal Configuration" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_UNUSED_RX_CLOCK_WORKAROUND Off +set_global_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL Off +set_global_assignment -name IGNORE_HSSI_COLUMN_POWER_WHEN_PRESERVING_UNUSED_XCVR_CHANNELS On +set_global_assignment -name AUTO_RESERVE_CLKUSR_FOR_CALIBRATION On +set_global_assignment -name DEVICE_INITIALIZATION_CLOCK INIT_INTOSC +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name INIT_DONE_OPEN_DRAIN On +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA15_THROUGH_DATA8_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA5_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name ENABLE_CONFIGURATION_PINS On +set_global_assignment -name ENABLE_JTAG_PIN_SHARING Off +set_global_assignment -name ENABLE_NCE_PIN Off +set_global_assignment -name ENABLE_BOOT_SEL_PIN On +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name INTERNAL_SCRUBBING Off +set_global_assignment -name PR_ERROR_OPEN_DRAIN On +set_global_assignment -name PR_READY_OPEN_DRAIN On +set_global_assignment -name ENABLE_CVP_CONFDONE Off +set_global_assignment -name CVP_CONFDONE_OPEN_DRAIN On +set_global_assignment -name ENABLE_NCONFIG_FROM_CORE On +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "MAX 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "MAX 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix IV" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX II" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone V" +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix IV" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria 10" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix V" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria V GZ" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING Normal +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name PERIPHERY_TO_CORE_PLACEMENT_AND_ROUTING_OPTIMIZATION OFF +set_global_assignment -name RESERVE_ROUTING_OUTPUT_FLEXIBILITY Off +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name QII_AUTO_PACKED_REGISTERS Auto +set_global_assignment -name AUTO_PACKED_REGISTERS_MAX Auto +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone 10 LP" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix IV" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV E" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX II" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone V" +set_global_assignment -name AUTO_DELAY_CHAINS_FOR_HIGH_FANOUT_INPUT_PINS OFF +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION Auto +set_global_assignment -name ROUTER_REGISTER_DUPLICATION Auto +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Auto +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION On +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone 10 LP" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "MAX 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone IV E" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Stratix V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V GZ" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Cyclone V" +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria 10" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Stratix V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Cyclone IV GX" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V GZ" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Cyclone V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Arria II GX" +set_global_assignment -name M144K_BLOCK_READ_CLOCK_DUTY_CYCLE_DEPENDENCY Off +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name AUTO_C3_M9K_BIT_SKIP Off +set_global_assignment -name PR_DONE_OPEN_DRAIN On +set_global_assignment -name NCEO_OPEN_DRAIN On +set_global_assignment -name ENABLE_CRC_ERROR_PIN Off +set_global_assignment -name ENABLE_PR_PINS Off +set_global_assignment -name RESERVE_PR_PINS Off +set_global_assignment -name CONVERT_PR_WARNINGS_TO_ERRORS Off +set_global_assignment -name PR_PINS_OPEN_DRAIN Off +set_global_assignment -name CLAMPING_DIODE Off +set_global_assignment -name TRI_STATE_SPI_PINS Off +set_global_assignment -name UNUSED_TSD_PINS_GND Off +set_global_assignment -name IMPLEMENT_MLAB_IN_16_BIT_DEEP_MODE Off +set_global_assignment -name FORM_DDR_CLUSTERING_CLIQUE Off +set_global_assignment -name ALM_REGISTER_PACKING_EFFORT Medium +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION Off -family "Stratix IV" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria 10" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Stratix V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V GZ" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Cyclone V" +set_global_assignment -name RELATIVE_NEUTRON_FLUX 1.0 +set_global_assignment -name SEU_FIT_REPORT Off +set_global_assignment -name HYPER_RETIMER Off -family "Arria 10" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ADD_PIPELINING_MAX "-1" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ASYNCH_CLEAR Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_USER_PRESERVE_RESTRICTION Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_DSP_BLOCKS On +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_RAM_BLOCKS On +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE On +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone 10 LP" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX 10" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV E" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX V" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GZ" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV GX" +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name PWRMGT_SLAVE_DEVICE_TYPE "PV3102 or EM1130" +set_global_assignment -name PWRMGT_SLAVE_DEVICE0_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE1_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE2_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE3_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE4_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE5_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE6_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE7_ADDRESS 0000000 +set_global_assignment -name PWRMGT_VOLTAGE_OUTPUT_FORMAT "Auto discovery" +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_M 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_B 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_R 0 +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone 10 LP" +set_global_assignment -name ENABLE_OCT_DONE On -family "MAX 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV E" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Stratix V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V GZ" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria II GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone V" +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT OFF +set_global_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE Off +set_global_assignment -name ENABLE_AUTONOMOUS_PCIE_HIP Off +set_global_assignment -name ENABLE_ADV_SEU_DETECTION Off +set_global_assignment -name POR_SCHEME "Instant ON" +set_global_assignment -name EN_USER_IO_WEAK_PULLUP On +set_global_assignment -name EN_SPI_IO_WEAK_PULLUP On +set_global_assignment -name POF_VERIFY_PROTECT Off +set_global_assignment -name ENABLE_SPI_MODE_CHECK Off +set_global_assignment -name FORCE_SSMCLK_TO_ISMCLK On +set_global_assignment -name FALLBACK_TO_EXTERNAL_FLASH Off +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 0 +set_global_assignment -name GENERATE_PMSF_FILES On +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name HPS_EARLY_IO_RELEASE Off +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name POWER_HPS_ENABLE Off +set_global_assignment -name POWER_HPS_PROC_FREQ 0.0 +set_global_assignment -name ENABLE_SMART_VOLTAGE_ID Off +set_global_assignment -name IGNORE_PARTITIONS Off +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name RAPID_RECOMPILE_ASSIGNMENT_CHECKING On +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_ENABLE_IPUTF_MODE On -section_id ? +set_global_assignment -name EDA_NATIVELINK_PORTABLE_FILE_PATHS Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY OFF -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST Off -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_EXTENDED_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_IBIS_SPECIFICATION_VERSION 4p2 -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_PRESERVE_HIGH_SPEED_TILES On -section_id ? -entity ? +set_global_assignment -name PARTITION_IGNORE_SOURCE_FILE_CHANGES Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ALWAYS_USE_QXP_NETLIST Off -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS UPDATE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name ALLOW_MULTIPLE_PERSONAS Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ASD_REGION_ID 1 -section_id ? -entity ? +set_global_assignment -name CROSS_BOUNDARY_OPTIMIZATIONS Off -section_id ? -entity ? +set_global_assignment -name PROPAGATE_CONSTANTS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name PROPAGATE_INVERSIONS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name REMOVE_LOGIC_ON_UNCONNECTED_OUTPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_INPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_BIDIRS On -section_id ? -entity ? +set_global_assignment -name ABSORB_PATHS_FROM_OUTPUTS_TO_INPUTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_ENABLE_STRICT_PRESERVATION Off -section_id ? -entity ? diff --git a/peripherals/vga/sint/de10_lite_description.txt b/peripherals/vga/sint/de10_lite_description.txt new file mode 100644 index 00000000..e69de29b diff --git a/peripherals/vga/vga.hex b/peripherals/vga/vga.hex new file mode 100644 index 00000000..7a251d0a --- /dev/null +++ b/peripherals/vga/vga.hex @@ -0,0 +1,8193 @@ +:0200000000FFFF +:0200010000FFFE +:0200020000FFFD +:0200030000FFFC +:0200040000FFFB +:0200050000FFFA +:0200060000FFF9 +:0200070000FFF8 +:020008000000F6 +:020009000000F5 +:02000A000000F4 +:02000B000000F3 +:02000C000000F2 +:02000D000000F1 +:02000E000000F0 +:02000F000000EF +:020010000000EE +:020011000000ED +:020012000000EC +:020013000000EB +:020014000000EA +:020015000000E9 +:020016000000E8 +:020017000000E7 +:020018000000E6 +:020019000000E5 +:02001A000000E4 +:02001B000000E3 +:02001C000000E2 +:02001D000000E1 +:02001E000000E0 +:02001F000000DF +:020020000000DE +:020021000000DD +:020022000000DC +:020023000000DB +:020024000000DA +:020025000000D9 +:020026000000D8 +:020027000000D7 +:020028000000D6 +:020029000000D5 +:02002A000000D4 +:02002B000000D3 +:02002C000000D2 +:02002D000000D1 +:02002E000000D0 +:02002F000000CF +:020030000000CE +:020031000000CD +:020032000000CC +:020033000000CB +:020034000000CA +:020035000000C9 +:020036000000C8 +:020037000000C7 +:020038000000C6 +:020039000000C5 +:02003A000000C4 +:02003B000000C3 +:02003C000000C2 +:02003D000000C1 +:02003E000000C0 +:02003F000000BF +:020040000000BE +:020041000000BD +:020042000000BC +:020043000000BB +:020044000000BA +:020045000000B9 +:020046000000B8 +:020047000000B7 +:020048000000B6 +:020049000000B5 +:02004A000000B4 +:02004B000000B3 +:02004C000000B2 +:02004D000000B1 +:02004E000000B0 +:02004F000000AF +:020050000000AE +:020051000000AD +:020052000000AC +:020053000000AB +:020054000000AA +:020055000000A9 +:020056000000A8 +:020057000000A7 +:020058000000A6 +:020059000000A5 +:02005A000000A4 +:02005B000000A3 +:02005C000000A2 +:02005D000000A1 +:02005E000000A0 +:02005F0000009F +:0200600000009E +:0200610000009D +:0200620000009C +:0200630000009B +:0200640000009A +:02006500000099 +:02006600000098 +:02006700000097 +:02006800000096 +:02006900000095 +:02006A00000094 +:02006B00000093 +:02006C00000092 +:02006D00000091 +:02006E00000090 +:02006F0000008F +:0200700000008E +:0200710000008D +:0200720000008C +:0200730000008B +:0200740000008A +:02007500000089 +:02007600000088 +:02007700000087 +:02007800000086 +:02007900000085 +:02007A00000084 +:02007B00000083 +:02007C00000082 +:02007D00000081 +:02007E00000080 +:02007F0000007F +:0200800000007E +:0200810000007D +:0200820000007C +:0200830000007B +:0200840000007A +:02008500000079 +:02008600000078 +:02008700000077 +:02008800000076 +:02008900000075 +:02008A00000074 +:02008B00000073 +:02008C00000072 +:02008D00000071 +:02008E00000070 +:02008F0000006F +:0200900000006E +:0200910000006D +:0200920000006C +:0200930000006B +:0200940000006A +:02009500000069 +:02009600000068 +:02009700000067 +:02009800000066 +:02009900000065 +:02009A00000064 +:02009B00000063 +:02009C00000062 +:02009D00000061 +:02009E00000060 +:02009F0000005F +:0200A00000005E +:0200A10000005D +:0200A20000005C +:0200A30000005B +:0200A40000005A +:0200A500000059 +:0200A600000058 +:0200A700000057 +:0200A800000056 +:0200A900000055 +:0200AA00000054 +:0200AB00000053 +:0200AC00000052 +:0200AD00000051 +:0200AE00000050 +:0200AF0000004F +:0200B00000004E +:0200B10000004D +:0200B20000004C +:0200B30000004B +:0200B40000004A +:0200B500000049 +:0200B600000048 +:0200B700000047 +:0200B800000046 +:0200B900000045 +:0200BA00000044 +:0200BB00000043 +:0200BC00000042 +:0200BD00000041 +:0200BE00000040 +:0200BF0000003F +:0200C00000003E +:0200C10000003D +:0200C20000003C +:0200C30000003B +:0200C40000003A +:0200C500000039 +:0200C600000038 +:0200C700000037 +:0200C800000036 +:0200C900000035 +:0200CA00000034 +:0200CB00000033 +:0200CC00000032 +:0200CD00000031 +:0200CE00000030 +:0200CF0000002F +:0200D00000002E +:0200D10000002D +:0200D20000002C +:0200D30000002B +:0200D40000002A +:0200D500000029 +:0200D600000028 +:0200D700000027 +:0200D800000026 +:0200D900000025 +:0200DA00000024 +:0200DB00000023 +:0200DC00000022 +:0200DD00000021 +:0200DE00000020 +:0200DF0000001F +:0200E00000001E +:0200E10000001D +:0200E20000001C +:0200E30000001B +:0200E40000001A +:0200E500000019 +:0200E600000018 +:0200E700000017 +:0200E800000016 +:0200E900000015 +:0200EA00000014 +:0200EB00000013 +:0200EC00000012 +:0200ED00000011 +:0200EE00000010 +:0200EF0000000F +:0200F00000000E +:0200F10000000D +:0200F20000000C +:0200F30000000B +:0200F40000000A +:0200F500000009 +:0200F600000008 +:0200F700000007 +:0200F800000006 +:0200F900000005 +:0200FA00000004 +:0200FB00000003 +:0200FC00000002 +:0200FD00000001 +:0200FE00000000 +:0200FF000000FF +:020100000000FD +:020101000000FC +:020102000000FB +:020103000000FA +:020104000000F9 +:020105000000F8 +:020106000000F7 +:020107000000F6 +:020108000000F5 +:020109000000F4 +:02010A000000F3 +:02010B000000F2 +:02010C000000F1 +:02010D000000F0 +:02010E000000EF +:02010F000000EE +:020110000000ED +:020111000000EC +:020112000000EB +:020113000000EA +:020114000000E9 +:020115000000E8 +:020116000000E7 +:020117000000E6 +:020118000000E5 +:020119000000E4 +:02011A000000E3 +:02011B000000E2 +:02011C000000E1 +:02011D000000E0 +:02011E000000DF +:02011F000000DE +:020120000000DD +:020121000000DC +:020122000000DB +:020123000000DA +:020124000000D9 +:020125000000D8 +:020126000000D7 +:020127000000D6 +:020128000000D5 +:020129000000D4 +:02012A000000D3 +:02012B000000D2 +:02012C000000D1 +:02012D000000D0 +:02012E000000CF +:02012F000000CE +:020130000000CD +:020131000000CC +:020132000000CB +:020133000000CA +:020134000000C9 +:020135000000C8 +:020136000000C7 +:020137000000C6 +:020138000000C5 +:020139000000C4 +:02013A000000C3 +:02013B000000C2 +:02013C000000C1 +:02013D000000C0 +:02013E000000BF +:02013F000000BE +:020140000000BD +:020141000000BC +:020142000000BB +:020143000000BA +:020144000000B9 +:020145000000B8 +:020146000000B7 +:020147000000B6 +:020148000000B5 +:020149000000B4 +:02014A000000B3 +:02014B000000B2 +:02014C000000B1 +:02014D000000B0 +:02014E000000AF +:02014F000000AE +:020150000000AD +:020151000000AC +:020152000000AB +:020153000000AA +:020154000000A9 +:020155000000A8 +:020156000000A7 +:020157000000A6 +:020158000000A5 +:020159000000A4 +:02015A000000A3 +:02015B000000A2 +:02015C000000A1 +:02015D000000A0 +:02015E0000009F +:02015F0000009E +:0201600000009D +:0201610000009C +:0201620000009B +:0201630000009A +:02016400000099 +:02016500000098 +:02016600000097 +:02016700000096 +:02016800000095 +:02016900000094 +:02016A00000093 +:02016B00000092 +:02016C00000091 +:02016D00000090 +:02016E0000008F +:02016F0000008E +:0201700000008D +:0201710000008C +:0201720000008B +:0201730000008A +:02017400000089 +:02017500000088 +:02017600000087 +:02017700000086 +:02017800000085 +:02017900000084 +:02017A00000083 +:02017B00000082 +:02017C00000081 +:02017D00000080 +:02017E0000007F +:02017F0000007E +:0201800000007D +:0201810000007C +:0201820000007B +:0201830000007A +:02018400000079 +:02018500000078 +:02018600000077 +:02018700000076 +:02018800000075 +:02018900000074 +:02018A00000073 +:02018B00000072 +:02018C00000071 +:02018D00000070 +:02018E0000006F +:02018F0000006E +:0201900000006D +:0201910000006C +:0201920000006B +:0201930000006A +:02019400000069 +:02019500000068 +:02019600000067 +:02019700000066 +:02019800000065 +:02019900000064 +:02019A00000063 +:02019B00000062 +:02019C00000061 +:02019D00000060 +:02019E0000005F +:02019F0000005E +:0201A00000005D +:0201A10000005C +:0201A20000005B +:0201A30000005A +:0201A400000059 +:0201A500000058 +:0201A600000057 +:0201A700000056 +:0201A800000055 +:0201A900000054 +:0201AA00000053 +:0201AB00000052 +:0201AC00000051 +:0201AD00000050 +:0201AE0000004F +:0201AF0000004E +:0201B00000004D +:0201B10000004C +:0201B20000004B +:0201B30000004A +:0201B400000049 +:0201B500000048 +:0201B600000047 +:0201B700000046 +:0201B800000045 +:0201B900000044 +:0201BA00000043 +:0201BB00000042 +:0201BC00000041 +:0201BD00000040 +:0201BE0000003F +:0201BF0000003E +:0201C00000003D +:0201C10000003C +:0201C20000003B +:0201C30000003A +:0201C400000039 +:0201C500000038 +:0201C600000037 +:0201C700000036 +:0201C800000035 +:0201C900000034 +:0201CA00000033 +:0201CB00000032 +:0201CC00000031 +:0201CD00000030 +:0201CE0000002F +:0201CF0000002E +:0201D00000002D +:0201D10000002C +:0201D20000002B +:0201D30000002A +:0201D400000029 +:0201D500000028 +:0201D600000027 +:0201D700000026 +:0201D800000025 +:0201D900000024 +:0201DA00000023 +:0201DB00000022 +:0201DC00000021 +:0201DD00000020 +:0201DE0000001F +:0201DF0000001E +:0201E00000001D +:0201E10000001C +:0201E20000001B +:0201E30000001A +:0201E400000019 +:0201E500000018 +:0201E600000017 +:0201E700000016 +:0201E800000015 +:0201E900000014 +:0201EA00000013 +:0201EB00000012 +:0201EC00000011 +:0201ED00000010 +:0201EE0000000F +:0201EF0000000E +:0201F00000000D +:0201F10000000C +:0201F20000000B +:0201F30000000A +:0201F400000009 +:0201F500000008 +:0201F600000007 +:0201F700000006 +:0201F800000005 +:0201F900000004 +:0201FA00000003 +:0201FB00000002 +:0201FC00000001 +:0201FD00000000 +:0201FE000000FF +:0201FF000000FE +:020200000000FC +:020201000000FB +:020202000000FA +:020203000000F9 +:020204000000F8 +:020205000000F7 +:020206000000F6 +:020207000000F5 +:020208000000F4 +:020209000000F3 +:02020A000000F2 +:02020B000000F1 +:02020C000000F0 +:02020D000000EF +:02020E000000EE +:02020F000000ED +:020210000000EC +:020211000000EB +:020212000000EA +:020213000000E9 +:020214000000E8 +:020215000000E7 +:020216000000E6 +:020217000000E5 +:020218000000E4 +:020219000000E3 +:02021A000000E2 +:02021B000000E1 +:02021C000000E0 +:02021D000000DF +:02021E000000DE +:02021F000000DD +:020220000000DC +:020221000000DB +:020222000000DA +:020223000000D9 +:020224000000D8 +:020225000000D7 +:020226000000D6 +:020227000000D5 +:020228000000D4 +:020229000000D3 +:02022A000000D2 +:02022B000000D1 +:02022C000000D0 +:02022D000000CF +:02022E000000CE +:02022F000000CD +:020230000000CC +:020231000000CB +:020232000000CA +:020233000000C9 +:020234000000C8 +:020235000000C7 +:020236000000C6 +:020237000000C5 +:020238000000C4 +:020239000000C3 +:02023A000000C2 +:02023B000000C1 +:02023C000000C0 +:02023D000000BF +:02023E000000BE +:02023F000000BD +:020240000000BC +:020241000000BB +:020242000000BA +:020243000000B9 +:020244000000B8 +:020245000000B7 +:020246000000B6 +:020247000000B5 +:020248000000B4 +:020249000000B3 +:02024A000000B2 +:02024B000000B1 +:02024C000000B0 +:02024D000000AF +:02024E000000AE +:02024F000000AD +:020250000000AC +:020251000000AB +:020252000000AA +:020253000000A9 +:020254000000A8 +:020255000000A7 +:020256000000A6 +:020257000000A5 +:020258000000A4 +:020259000000A3 +:02025A000000A2 +:02025B000000A1 +:02025C000000A0 +:02025D0000009F +:02025E0000009E +:02025F0000009D +:0202600000009C +:0202610000009B +:0202620000009A +:02026300000099 +:02026400000098 +:02026500000097 +:02026600000096 +:02026700000095 +:02026800000094 +:02026900000093 +:02026A00000092 +:02026B00000091 +:02026C00000090 +:02026D0000008F +:02026E0000008E +:02026F0000008D +:0202700000008C +:0202710000008B +:0202720000008A +:02027300000089 +:02027400000088 +:02027500000087 +:02027600000086 +:02027700000085 +:02027800000084 +:02027900000083 +:02027A00000082 +:02027B00000081 +:02027C00000080 +:02027D0000007F +:02027E0000007E +:02027F0000007D +:0202800000007C +:0202810000007B +:0202820000007A +:02028300000079 +:02028400000078 +:02028500000077 +:02028600000076 +:02028700000075 +:02028800000074 +:02028900000073 +:02028A00000072 +:02028B00000071 +:02028C00000070 +:02028D0000006F +:02028E0000006E +:02028F0000006D +:0202900000006C +:0202910000006B +:0202920000006A +:02029300000069 +:02029400000068 +:02029500000067 +:02029600000066 +:02029700000065 +:02029800000064 +:02029900000063 +:02029A00000062 +:02029B00000061 +:02029C00000060 +:02029D0000005F +:02029E0000005E +:02029F0000005D +:0202A00000005C +:0202A10000005B +:0202A20000005A +:0202A300000059 +:0202A400000058 +:0202A500000057 +:0202A600000056 +:0202A700000055 +:0202A800000054 +:0202A900000053 +:0202AA00000052 +:0202AB00000051 +:0202AC00000050 +:0202AD0000004F +:0202AE0000004E +:0202AF0000004D +:0202B00000004C +:0202B10000004B +:0202B20000004A +:0202B300000049 +:0202B400000048 +:0202B500000047 +:0202B600000046 +:0202B700000045 +:0202B800000044 +:0202B900000043 +:0202BA00000042 +:0202BB00000041 +:0202BC00000040 +:0202BD0000003F +:0202BE0000003E +:0202BF0000003D +:0202C00000003C +:0202C10000003B +:0202C20000003A +:0202C300000039 +:0202C400000038 +:0202C500000037 +:0202C600000036 +:0202C700000035 +:0202C800000034 +:0202C900000033 +:0202CA00000032 +:0202CB00000031 +:0202CC00000030 +:0202CD0000002F +:0202CE0000002E +:0202CF0000002D +:0202D00000002C +:0202D10000002B +:0202D20000002A +:0202D300000029 +:0202D400000028 +:0202D500000027 +:0202D600000026 +:0202D700000025 +:0202D800000024 +:0202D900000023 +:0202DA00000022 +:0202DB00000021 +:0202DC00000020 +:0202DD0000001F +:0202DE0000001E +:0202DF0000001D +:0202E00000001C +:0202E10000001B +:0202E20000001A +:0202E300000019 +:0202E400000018 +:0202E500000017 +:0202E600000016 +:0202E700000015 +:0202E800000014 +:0202E900000013 +:0202EA00000012 +:0202EB00000011 +:0202EC00000010 +:0202ED0000000F +:0202EE0000000E +:0202EF0000000D +:0202F00000000C +:0202F10000000B +:0202F20000000A +:0202F300000009 +:0202F400000008 +:0202F500000007 +:0202F600000006 +:0202F700000005 +:0202F800000004 +:0202F900000003 +:0202FA00000002 +:0202FB00000001 +:0202FC00000000 +:0202FD000000FF +:0202FE000000FE +:0202FF000000FD +:020300000000FB +:020301000000FA +:020302000000F9 +:020303000000F8 +:020304000000F7 +:020305000000F6 +:020306000000F5 +:020307000000F4 +:020308000000F3 +:020309000000F2 +:02030A000000F1 +:02030B000000F0 +:02030C000000EF +:02030D000000EE +:02030E000000ED +:02030F000000EC +:020310000000EB +:020311000000EA +:020312000000E9 +:020313000000E8 +:020314000000E7 +:020315000000E6 +:020316000000E5 +:020317000000E4 +:020318000000E3 +:020319000000E2 +:02031A000000E1 +:02031B000000E0 +:02031C000000DF +:02031D000000DE +:02031E000000DD +:02031F000000DC +:020320000000DB +:020321000000DA +:020322000000D9 +:020323000000D8 +:020324000000D7 +:020325000000D6 +:020326000000D5 +:020327000000D4 +:020328000000D3 +:020329000000D2 +:02032A000000D1 +:02032B000000D0 +:02032C000000CF +:02032D000000CE +:02032E000000CD +:02032F000000CC +:020330000000CB +:020331000000CA +:020332000000C9 +:020333000000C8 +:020334000000C7 +:020335000000C6 +:020336000000C5 +:020337000000C4 +:020338000000C3 +:020339000000C2 +:02033A000000C1 +:02033B000000C0 +:02033C000000BF +:02033D000000BE +:02033E000000BD +:02033F000000BC +:020340000000BB +:020341000000BA +:020342000000B9 +:020343000000B8 +:020344000000B7 +:020345000000B6 +:020346000000B5 +:020347000000B4 +:020348000000B3 +:020349000000B2 +:02034A000000B1 +:02034B000000B0 +:02034C000000AF +:02034D000000AE +:02034E000000AD +:02034F000000AC +:020350000000AB +:020351000000AA +:020352000000A9 +:020353000000A8 +:020354000000A7 +:020355000000A6 +:020356000000A5 +:020357000000A4 +:020358000000A3 +:020359000000A2 +:02035A000000A1 +:02035B000000A0 +:02035C0000009F +:02035D0000009E +:02035E0000009D +:02035F0000009C +:0203600000009B +:0203610000009A +:02036200000099 +:02036300000098 +:02036400000097 +:02036500000096 +:02036600000095 +:02036700000094 +:02036800000093 +:02036900000092 +:02036A00000091 +:02036B00000090 +:02036C0000008F +:02036D0000008E +:02036E0000008D +:02036F0000008C +:0203700000008B +:0203710000008A +:02037200000089 +:02037300000088 +:02037400000087 +:02037500000086 +:02037600000085 +:02037700000084 +:02037800000083 +:02037900000082 +:02037A00000081 +:02037B00000080 +:02037C0000007F +:02037D0000007E +:02037E0000007D +:02037F0000007C +:0203800000007B +:0203810000007A +:02038200000079 +:02038300000078 +:02038400000077 +:02038500000076 +:02038600000075 +:02038700000074 +:02038800000073 +:02038900000072 +:02038A00000071 +:02038B00000070 +:02038C0000006F +:02038D0000006E +:02038E0000006D +:02038F0000006C +:0203900000006B +:0203910000006A +:02039200000069 +:02039300000068 +:02039400000067 +:02039500000066 +:02039600000065 +:02039700000064 +:02039800000063 +:02039900000062 +:02039A00000061 +:02039B00000060 +:02039C0000005F +:02039D0000005E +:02039E0000005D +:02039F0000005C +:0203A00000005B +:0203A10000005A +:0203A200000059 +:0203A300000058 +:0203A400000057 +:0203A500000056 +:0203A600000055 +:0203A700000054 +:0203A800000053 +:0203A900000052 +:0203AA00000051 +:0203AB00000050 +:0203AC0000004F +:0203AD0000004E +:0203AE0000004D +:0203AF0000004C +:0203B00000004B +:0203B10000004A +:0203B200000049 +:0203B300000048 +:0203B400000047 +:0203B500000046 +:0203B600000045 +:0203B700000044 +:0203B800000043 +:0203B900000042 +:0203BA00000041 +:0203BB00000040 +:0203BC0000003F +:0203BD0000003E +:0203BE0000003D +:0203BF0000003C +:0203C00000003B +:0203C10000003A +:0203C200000039 +:0203C300000038 +:0203C400000037 +:0203C500000036 +:0203C600000035 +:0203C700000034 +:0203C800000033 +:0203C900000032 +:0203CA00000031 +:0203CB00000030 +:0203CC0000002F +:0203CD0000002E +:0203CE0000002D +:0203CF0000002C +:0203D00000002B +:0203D10000002A +:0203D200000029 +:0203D300000028 +:0203D400000027 +:0203D500000026 +:0203D600000025 +:0203D700000024 +:0203D800000023 +:0203D900000022 +:0203DA00000021 +:0203DB00000020 +:0203DC0000001F +:0203DD0000001E +:0203DE0000001D +:0203DF0000001C +:0203E00000001B +:0203E10000001A +:0203E200000019 +:0203E300000018 +:0203E400000017 +:0203E500000016 +:0203E600000015 +:0203E700000014 +:0203E800000013 +:0203E900000012 +:0203EA00000011 +:0203EB00000010 +:0203EC0000000F +:0203ED0000000E +:0203EE0000000D +:0203EF0000000C +:0203F00000000B +:0203F10000000A +:0203F200000009 +:0203F300000008 +:0203F400000007 +:0203F500000006 +:0203F600000005 +:0203F700000004 +:0203F800000003 +:0203F900000002 +:0203FA00000001 +:0203FB00000000 +:0203FC000000FF +:0203FD000000FE +:0203FE000000FD +:0203FF000000FC +:020400000000FA +:020401000000F9 +:020402000000F8 +:020403000000F7 +:020404000000F6 +:020405000000F5 +:020406000000F4 +:020407000000F3 +:020408000000F2 +:020409000000F1 +:02040A000000F0 +:02040B000000EF +:02040C000000EE +:02040D000000ED +:02040E000000EC +:02040F000000EB +:020410000000EA +:020411000000E9 +:020412000000E8 +:020413000000E7 +:020414000000E6 +:020415000000E5 +:020416000000E4 +:020417000000E3 +:020418000000E2 +:020419000000E1 +:02041A000000E0 +:02041B000000DF +:02041C000000DE +:02041D000000DD +:02041E000000DC +:02041F000000DB +:020420000000DA +:020421000000D9 +:020422000000D8 +:020423000000D7 +:020424000000D6 +:020425000000D5 +:020426000000D4 +:020427000000D3 +:020428000000D2 +:020429000000D1 +:02042A000000D0 +:02042B000000CF +:02042C000000CE +:02042D000000CD +:02042E000000CC +:02042F000000CB +:020430000000CA +:020431000000C9 +:020432000000C8 +:020433000000C7 +:020434000000C6 +:020435000000C5 +:020436000000C4 +:020437000000C3 +:020438000000C2 +:020439000000C1 +:02043A000000C0 +:02043B000000BF +:02043C000000BE +:02043D000000BD +:02043E000000BC +:02043F000000BB +:020440000000BA +:020441000000B9 +:020442000000B8 +:020443000000B7 +:020444000000B6 +:020445000000B5 +:020446000000B4 +:020447000000B3 +:020448000000B2 +:020449000000B1 +:02044A000000B0 +:02044B000000AF +:02044C000000AE +:02044D000000AD +:02044E000000AC +:02044F000000AB +:020450000000AA +:020451000000A9 +:020452000000A8 +:020453000000A7 +:020454000000A6 +:020455000000A5 +:020456000000A4 +:020457000000A3 +:020458000000A2 +:020459000000A1 +:02045A000000A0 +:02045B0000009F +:02045C0000009E +:02045D0000009D +:02045E0000009C +:02045F0000009B +:0204600000009A +:02046100000099 +:02046200000098 +:02046300000097 +:02046400000096 +:02046500000095 +:02046600000094 +:02046700000093 +:02046800000092 +:02046900000091 +:02046A00000090 +:02046B0000008F +:02046C0000008E +:02046D0000008D +:02046E0000008C +:02046F0000008B +:0204700000008A +:02047100000089 +:02047200000088 +:02047300000087 +:02047400000086 +:02047500000085 +:02047600000084 +:02047700000083 +:02047800000082 +:02047900000081 +:02047A00000080 +:02047B0000007F +:02047C0000007E +:02047D0000007D +:02047E0000007C +:02047F0000007B +:0204800000007A +:02048100000079 +:02048200000078 +:02048300000077 +:02048400000076 +:02048500000075 +:02048600000074 +:02048700000073 +:02048800000072 +:02048900000071 +:02048A00000070 +:02048B0000006F +:02048C0000006E +:02048D0000006D +:02048E0000006C +:02048F0000006B +:0204900000006A +:02049100000069 +:02049200000068 +:02049300000067 +:02049400000066 +:02049500000065 +:02049600000064 +:02049700000063 +:02049800000062 +:02049900000061 +:02049A00000060 +:02049B0000005F +:02049C0000005E +:02049D0000005D +:02049E0000005C +:02049F0000005B +:0204A00000005A +:0204A100000059 +:0204A200000058 +:0204A300000057 +:0204A400000056 +:0204A500000055 +:0204A600000054 +:0204A700000053 +:0204A800000052 +:0204A900000051 +:0204AA00000050 +:0204AB0000004F +:0204AC0000004E +:0204AD0000004D +:0204AE0000004C +:0204AF0000004B +:0204B00000004A +:0204B100000049 +:0204B200000048 +:0204B300000047 +:0204B400000046 +:0204B500000045 +:0204B600000044 +:0204B700000043 +:0204B800000042 +:0204B900000041 +:0204BA00000040 +:0204BB0000003F +:0204BC0000003E +:0204BD0000003D +:0204BE0000003C +:0204BF0000003B +:0204C00000003A +:0204C100000039 +:0204C200000038 +:0204C300000037 +:0204C400000036 +:0204C500000035 +:0204C600000034 +:0204C700000033 +:0204C800000032 +:0204C900000031 +:0204CA00000030 +:0204CB0000002F +:0204CC0000002E +:0204CD0000002D +:0204CE0000002C +:0204CF0000002B +:0204D00000002A +:0204D100000029 +:0204D200000028 +:0204D300000027 +:0204D400000026 +:0204D500000025 +:0204D600000024 +:0204D700000023 +:0204D800000022 +:0204D900000021 +:0204DA00000020 +:0204DB0000001F +:0204DC0000001E +:0204DD0000001D +:0204DE0000001C +:0204DF0000001B +:0204E00000001A +:0204E100000019 +:0204E200000018 +:0204E300000017 +:0204E400000016 +:0204E500000015 +:0204E600000014 +:0204E700000013 +:0204E800000012 +:0204E900000011 +:0204EA00000010 +:0204EB0000000F +:0204EC0000000E +:0204ED0000000D +:0204EE0000000C +:0204EF0000000B +:0204F00000000A +:0204F100000009 +:0204F200000008 +:0204F300000007 +:0204F400000006 +:0204F500000005 +:0204F600000004 +:0204F700000003 +:0204F800000002 +:0204F900000001 +:0204FA00000000 +:0204FB000000FF +:0204FC000000FE +:0204FD000000FD +:0204FE000000FC +:0204FF000000FB +:020500000000F9 +:020501000000F8 +:020502000000F7 +:020503000000F6 +:020504000000F5 +:020505000000F4 +:020506000000F3 +:020507000000F2 +:020508000000F1 +:020509000000F0 +:02050A000000EF +:02050B000000EE +:02050C000000ED +:02050D000000EC +:02050E000000EB +:02050F000000EA +:020510000000E9 +:020511000000E8 +:020512000000E7 +:020513000000E6 +:020514000000E5 +:020515000000E4 +:020516000000E3 +:020517000000E2 +:020518000000E1 +:020519000000E0 +:02051A000000DF +:02051B000000DE +:02051C000000DD +:02051D000000DC +:02051E000000DB +:02051F000000DA +:020520000000D9 +:020521000000D8 +:020522000000D7 +:020523000000D6 +:020524000000D5 +:020525000000D4 +:020526000000D3 +:020527000000D2 +:020528000000D1 +:020529000000D0 +:02052A000000CF +:02052B000000CE +:02052C000000CD +:02052D000000CC +:02052E000000CB +:02052F000000CA +:020530000000C9 +:020531000000C8 +:020532000000C7 +:020533000000C6 +:020534000000C5 +:020535000000C4 +:020536000000C3 +:020537000000C2 +:020538000000C1 +:020539000000C0 +:02053A000000BF +:02053B000000BE +:02053C000000BD +:02053D000000BC +:02053E000000BB +:02053F000000BA +:020540000000B9 +:020541000000B8 +:020542000000B7 +:020543000000B6 +:020544000000B5 +:020545000000B4 +:020546000000B3 +:020547000000B2 +:020548000000B1 +:020549000000B0 +:02054A000000AF +:02054B000000AE +:02054C000000AD +:02054D000000AC +:02054E000000AB +:02054F000000AA +:020550000000A9 +:020551000000A8 +:020552000000A7 +:020553000000A6 +:020554000000A5 +:020555000000A4 +:020556000000A3 +:020557000000A2 +:020558000000A1 +:020559000000A0 +:02055A0000009F +:02055B0000009E +:02055C0000009D +:02055D0000009C +:02055E0000009B +:02055F0000009A +:02056000000099 +:02056100000098 +:02056200000097 +:02056300000096 +:02056400000095 +:02056500000094 +:02056600000093 +:02056700000092 +:02056800000091 +:02056900000090 +:02056A0000008F +:02056B0000008E +:02056C0000008D +:02056D0000008C +:02056E0000008B +:02056F0000008A +:02057000000089 +:02057100000088 +:02057200000087 +:02057300000086 +:02057400000085 +:02057500000084 +:02057600000083 +:02057700000082 +:02057800000081 +:02057900000080 +:02057A0000007F +:02057B0000007E +:02057C0000007D +:02057D0000007C +:02057E0000007B +:02057F0000007A +:02058000000079 +:02058100000078 +:02058200000077 +:02058300000076 +:02058400000075 +:02058500000074 +:02058600000073 +:02058700000072 +:02058800000071 +:02058900000070 +:02058A0000006F +:02058B0000006E +:02058C0000006D +:02058D0000006C +:02058E0000006B +:02058F0000006A +:02059000000069 +:02059100000068 +:02059200000067 +:02059300000066 +:02059400000065 +:02059500000064 +:02059600000063 +:02059700000062 +:02059800000061 +:02059900000060 +:02059A0000005F +:02059B0000005E +:02059C0000005D +:02059D0000005C +:02059E0000005B +:02059F0000005A +:0205A000000059 +:0205A100000058 +:0205A200000057 +:0205A300000056 +:0205A400000055 +:0205A500000054 +:0205A600000053 +:0205A700000052 +:0205A800000051 +:0205A900000050 +:0205AA0000004F +:0205AB0000004E +:0205AC0000004D +:0205AD0000004C +:0205AE0000004B +:0205AF0000004A +:0205B000000049 +:0205B100000048 +:0205B200000047 +:0205B300000046 +:0205B400000045 +:0205B500000044 +:0205B600000043 +:0205B700000042 +:0205B800000041 +:0205B900000040 +:0205BA0000003F +:0205BB0000003E +:0205BC0000003D +:0205BD0000003C +:0205BE0000003B +:0205BF0000003A +:0205C000000039 +:0205C100000038 +:0205C200000037 +:0205C300000036 +:0205C400000035 +:0205C500000034 +:0205C600000033 +:0205C700000032 +:0205C800000031 +:0205C900000030 +:0205CA0000002F +:0205CB0000002E +:0205CC0000002D +:0205CD0000002C +:0205CE0000002B +:0205CF0000002A +:0205D000000029 +:0205D100000028 +:0205D200000027 +:0205D300000026 +:0205D400000025 +:0205D500000024 +:0205D600000023 +:0205D700000022 +:0205D800000021 +:0205D900000020 +:0205DA0000001F +:0205DB0000001E +:0205DC0000001D +:0205DD0000001C +:0205DE0000001B +:0205DF0000001A +:0205E000000019 +:0205E100000018 +:0205E200000017 +:0205E300000016 +:0205E400000015 +:0205E500000014 +:0205E600000013 +:0205E700000012 +:0205E800000011 +:0205E900000010 +:0205EA0000000F +:0205EB0000000E +:0205EC0000000D +:0205ED0000000C +:0205EE0000000B +:0205EF0000000A +:0205F000000009 +:0205F100000008 +:0205F200000007 +:0205F300000006 +:0205F400000005 +:0205F500000004 +:0205F600000003 +:0205F700000002 +:0205F800000001 +:0205F900000000 +:0205FA000000FF +:0205FB000000FE +:0205FC000000FD +:0205FD000000FC +:0205FE000000FB +:0205FF000000FA +:020600000000F8 +:020601000000F7 +:020602000000F6 +:020603000000F5 +:020604000000F4 +:020605000000F3 +:020606000000F2 +:020607000000F1 +:020608000000F0 +:020609000000EF +:02060A000000EE +:02060B000000ED +:02060C000000EC +:02060D000000EB +:02060E000000EA +:02060F000000E9 +:020610000000E8 +:020611000000E7 +:020612000000E6 +:020613000000E5 +:020614000000E4 +:020615000000E3 +:020616000000E2 +:020617000000E1 +:020618000000E0 +:020619000000DF +:02061A000000DE +:02061B000000DD +:02061C000000DC +:02061D000000DB +:02061E000000DA +:02061F000000D9 +:020620000000D8 +:020621000000D7 +:020622000000D6 +:020623000000D5 +:020624000000D4 +:020625000000D3 +:020626000000D2 +:020627000000D1 +:020628000000D0 +:020629000000CF +:02062A000000CE +:02062B000000CD +:02062C000000CC +:02062D000000CB +:02062E000000CA +:02062F000000C9 +:020630000000C8 +:020631000000C7 +:020632000000C6 +:020633000000C5 +:020634000000C4 +:020635000000C3 +:020636000000C2 +:020637000000C1 +:020638000000C0 +:020639000000BF +:02063A000000BE +:02063B000000BD +:02063C000000BC +:02063D000000BB +:02063E000000BA +:02063F000000B9 +:020640000000B8 +:020641000000B7 +:020642000000B6 +:020643000000B5 +:020644000000B4 +:020645000000B3 +:020646000000B2 +:020647000000B1 +:020648000000B0 +:020649000000AF +:02064A000000AE +:02064B000000AD +:02064C000000AC +:02064D000000AB +:02064E000000AA +:02064F000000A9 +:020650000000A8 +:020651000000A7 +:020652000000A6 +:020653000000A5 +:020654000000A4 +:020655000000A3 +:020656000000A2 +:020657000000A1 +:020658000000A0 +:0206590000009F +:02065A0000009E +:02065B0000009D +:02065C0000009C +:02065D0000009B +:02065E0000009A +:02065F00000099 +:02066000000098 +:02066100000097 +:02066200000096 +:02066300000095 +:02066400000094 +:02066500000093 +:02066600000092 +:02066700000091 +:02066800000090 +:0206690000008F +:02066A0000008E +:02066B0000008D +:02066C0000008C +:02066D0000008B +:02066E0000008A +:02066F00000089 +:02067000000088 +:02067100000087 +:02067200000086 +:02067300000085 +:02067400000084 +:02067500000083 +:02067600000082 +:02067700000081 +:02067800000080 +:0206790000007F +:02067A0000007E +:02067B0000007D +:02067C0000007C +:02067D0000007B +:02067E0000007A +:02067F00000079 +:02068000000078 +:02068100000077 +:02068200000076 +:02068300000075 +:02068400000074 +:02068500000073 +:02068600000072 +:02068700000071 +:02068800000070 +:0206890000006F +:02068A0000006E +:02068B0000006D +:02068C0000006C +:02068D0000006B +:02068E0000006A +:02068F00000069 +:02069000000068 +:02069100000067 +:02069200000066 +:02069300000065 +:02069400000064 +:02069500000063 +:02069600000062 +:02069700000061 +:02069800000060 +:0206990000005F +:02069A0000005E +:02069B0000005D +:02069C0000005C +:02069D0000005B +:02069E0000005A +:02069F00000059 +:0206A000000058 +:0206A100000057 +:0206A200000056 +:0206A300000055 +:0206A400000054 +:0206A500000053 +:0206A600000052 +:0206A700000051 +:0206A800000050 +:0206A90000004F +:0206AA0000004E +:0206AB0000004D +:0206AC0000004C +:0206AD0000004B +:0206AE0000004A +:0206AF00000049 +:0206B000000048 +:0206B100000047 +:0206B200000046 +:0206B300000045 +:0206B400000044 +:0206B500000043 +:0206B600000042 +:0206B700000041 +:0206B800000040 +:0206B90000003F +:0206BA0000003E +:0206BB0000003D +:0206BC0000003C +:0206BD0000003B +:0206BE0000003A +:0206BF00000039 +:0206C000000038 +:0206C100000037 +:0206C200000036 +:0206C300000035 +:0206C400000034 +:0206C500000033 +:0206C600000032 +:0206C700000031 +:0206C800000030 +:0206C90000002F +:0206CA0000002E +:0206CB0000002D +:0206CC0000002C +:0206CD0000002B +:0206CE0000002A +:0206CF00000029 +:0206D000000028 +:0206D100000027 +:0206D200000026 +:0206D300000025 +:0206D400000024 +:0206D500000023 +:0206D600000022 +:0206D700000021 +:0206D800000020 +:0206D90000001F +:0206DA0000001E +:0206DB0000001D +:0206DC0000001C +:0206DD0000001B +:0206DE0000001A +:0206DF00000019 +:0206E000000018 +:0206E100000017 +:0206E200000016 +:0206E300000015 +:0206E400000014 +:0206E500000013 +:0206E600000012 +:0206E700000011 +:0206E800000010 +:0206E90000000F +:0206EA0000000E +:0206EB0000000D +:0206EC0000000C +:0206ED0000000B +:0206EE0000000A +:0206EF00000009 +:0206F000000008 +:0206F100000007 +:0206F200000006 +:0206F300000005 +:0206F400000004 +:0206F500000003 +:0206F600000002 +:0206F700000001 +:0206F800000000 +:0206F9000000FF +:0206FA000000FE +:0206FB000000FD +:0206FC000000FC +:0206FD000000FB +:0206FE000000FA +:0206FF000000F9 +:020700000000F7 +:020701000000F6 +:020702000000F5 +:020703000000F4 +:020704000000F3 +:020705000000F2 +:020706000000F1 +:020707000000F0 +:020708000000EF +:020709000000EE +:02070A000000ED +:02070B000000EC +:02070C000000EB +:02070D000000EA +:02070E000000E9 +:02070F000000E8 +:020710000000E7 +:020711000000E6 +:020712000000E5 +:020713000000E4 +:020714000000E3 +:020715000000E2 +:020716000000E1 +:020717000000E0 +:020718000000DF +:020719000000DE +:02071A000000DD +:02071B000000DC +:02071C000000DB +:02071D000000DA +:02071E000000D9 +:02071F000000D8 +:020720000000D7 +:020721000000D6 +:020722000000D5 +:020723000000D4 +:020724000000D3 +:020725000000D2 +:020726000000D1 +:020727000000D0 +:020728000000CF +:020729000000CE +:02072A000000CD +:02072B000000CC +:02072C000000CB +:02072D000000CA +:02072E000000C9 +:02072F000000C8 +:020730000000C7 +:020731000000C6 +:020732000000C5 +:020733000000C4 +:020734000000C3 +:020735000000C2 +:020736000000C1 +:020737000000C0 +:020738000000BF +:020739000000BE +:02073A000000BD +:02073B000000BC +:02073C000000BB +:02073D000000BA +:02073E000000B9 +:02073F000000B8 +:020740000000B7 +:020741000000B6 +:020742000000B5 +:020743000000B4 +:020744000000B3 +:020745000000B2 +:020746000000B1 +:020747000000B0 +:020748000000AF +:020749000000AE +:02074A000000AD +:02074B000000AC +:02074C000000AB +:02074D000000AA +:02074E000000A9 +:02074F000000A8 +:020750000000A7 +:020751000000A6 +:020752000000A5 +:020753000000A4 +:020754000000A3 +:020755000000A2 +:020756000000A1 +:020757000000A0 +:0207580000009F +:0207590000009E +:02075A0000009D +:02075B0000009C +:02075C0000009B +:02075D0000009A +:02075E00000099 +:02075F00000098 +:02076000000097 +:02076100000096 +:02076200000095 +:02076300000094 +:02076400000093 +:02076500000092 +:02076600000091 +:02076700000090 +:0207680000008F +:0207690000008E +:02076A0000008D +:02076B0000008C +:02076C0000008B +:02076D0000008A +:02076E00000089 +:02076F00000088 +:02077000000087 +:02077100000086 +:02077200000085 +:02077300000084 +:02077400000083 +:02077500000082 +:02077600000081 +:02077700000080 +:0207780000007F +:0207790000007E +:02077A0000007D +:02077B0000007C +:02077C0000007B +:02077D0000007A +:02077E00000079 +:02077F00000078 +:02078000000077 +:02078100000076 +:02078200000075 +:02078300000074 +:02078400000073 +:02078500000072 +:02078600000071 +:02078700000070 +:0207880000006F +:0207890000006E +:02078A0000006D +:02078B0000006C +:02078C0000006B +:02078D0000006A +:02078E00000069 +:02078F00000068 +:02079000000067 +:02079100000066 +:02079200000065 +:02079300000064 +:02079400000063 +:02079500000062 +:02079600000061 +:02079700000060 +:0207980000005F +:0207990000005E +:02079A0000005D +:02079B0000005C +:02079C0000005B +:02079D0000005A +:02079E00000059 +:02079F00000058 +:0207A000000057 +:0207A100000056 +:0207A200000055 +:0207A300000054 +:0207A400000053 +:0207A500000052 +:0207A600000051 +:0207A700000050 +:0207A80000004F +:0207A90000004E +:0207AA0000004D +:0207AB0000004C +:0207AC0000004B +:0207AD0000004A +:0207AE00000049 +:0207AF00000048 +:0207B000000047 +:0207B100000046 +:0207B200000045 +:0207B300000044 +:0207B400000043 +:0207B500000042 +:0207B600000041 +:0207B700000040 +:0207B80000003F +:0207B90000003E +:0207BA0000003D +:0207BB0000003C +:0207BC0000003B +:0207BD0000003A +:0207BE00000039 +:0207BF00000038 +:0207C000000037 +:0207C100000036 +:0207C200000035 +:0207C300000034 +:0207C400000033 +:0207C500000032 +:0207C600000031 +:0207C700000030 +:0207C80000002F +:0207C90000002E +:0207CA0000002D +:0207CB0000002C +:0207CC0000002B +:0207CD0000002A +:0207CE00000029 +:0207CF00000028 +:0207D000000027 +:0207D100000026 +:0207D200000025 +:0207D300000024 +:0207D400000023 +:0207D500000022 +:0207D600000021 +:0207D700000020 +:0207D80000001F +:0207D90000001E +:0207DA0000001D +:0207DB0000001C +:0207DC0000001B +:0207DD0000001A +:0207DE00000019 +:0207DF00000018 +:0207E000000017 +:0207E100000016 +:0207E200000015 +:0207E300000014 +:0207E400000013 +:0207E500000012 +:0207E600000011 +:0207E700000010 +:0207E80000000F +:0207E90000000E +:0207EA0000000D +:0207EB0000000C +:0207EC0000000B +:0207ED0000000A +:0207EE00000009 +:0207EF00000008 +:0207F000000007 +:0207F100000006 +:0207F200000005 +:0207F300000004 +:0207F400000003 +:0207F500000002 +:0207F600000001 +:0207F700000000 +:0207F8000000FF +:0207F9000000FE +:0207FA000000FD +:0207FB000000FC +:0207FC000000FB +:0207FD000000FA +:0207FE000000F9 +:0207FF000000F8 +:020800000000F6 +:020801000000F5 +:020802000000F4 +:020803000000F3 +:020804000000F2 +:020805000000F1 +:020806000000F0 +:020807000000EF +:020808000000EE +:020809000000ED +:02080A000000EC +:02080B000000EB +:02080C000000EA +:02080D000000E9 +:02080E000000E8 +:02080F000000E7 +:020810000000E6 +:020811000000E5 +:020812000000E4 +:020813000000E3 +:020814000000E2 +:020815000000E1 +:020816000000E0 +:020817000000DF +:020818000000DE +:020819000000DD +:02081A000000DC +:02081B000000DB +:02081C000000DA +:02081D000000D9 +:02081E000000D8 +:02081F000000D7 +:020820000000D6 +:020821000000D5 +:020822000000D4 +:020823000000D3 +:020824000000D2 +:020825000000D1 +:020826000000D0 +:020827000000CF +:020828000000CE +:020829000000CD +:02082A000000CC +:02082B000000CB +:02082C000000CA +:02082D000000C9 +:02082E000000C8 +:02082F000000C7 +:020830000000C6 +:020831000000C5 +:020832000000C4 +:020833000000C3 +:020834000000C2 +:020835000000C1 +:020836000000C0 +:020837000000BF +:020838000000BE +:020839000000BD +:02083A000000BC +:02083B000000BB +:02083C000000BA +:02083D000000B9 +:02083E000000B8 +:02083F000000B7 +:020840000000B6 +:020841000000B5 +:020842000000B4 +:020843000000B3 +:020844000000B2 +:020845000000B1 +:020846000000B0 +:020847000000AF +:020848000000AE +:020849000000AD +:02084A000000AC +:02084B000000AB +:02084C000000AA +:02084D000000A9 +:02084E000000A8 +:02084F000000A7 +:020850000000A6 +:020851000000A5 +:020852000000A4 +:020853000000A3 +:020854000000A2 +:020855000000A1 +:020856000000A0 +:0208570000009F +:0208580000009E +:0208590000009D +:02085A0000009C +:02085B0000009B +:02085C0000009A +:02085D00000099 +:02085E00000098 +:02085F00000097 +:02086000000096 +:02086100000095 +:02086200000094 +:02086300000093 +:02086400000092 +:02086500000091 +:02086600000090 +:0208670000008F +:0208680000008E +:0208690000008D +:02086A0000008C +:02086B0000008B +:02086C0000008A +:02086D00000089 +:02086E00000088 +:02086F00000087 +:02087000000086 +:02087100000085 +:02087200000084 +:02087300000083 +:02087400000082 +:02087500000081 +:02087600000080 +:0208770000007F +:0208780000007E +:0208790000007D +:02087A0000007C +:02087B0000007B +:02087C0000007A +:02087D00000079 +:02087E00000078 +:02087F00000077 +:02088000000076 +:02088100000075 +:02088200000074 +:02088300000073 +:02088400000072 +:02088500000071 +:02088600000070 +:0208870000006F +:0208880000006E +:0208890000006D +:02088A0000006C +:02088B0000006B +:02088C0000006A +:02088D00000069 +:02088E00000068 +:02088F00000067 +:02089000000066 +:02089100000065 +:02089200000064 +:02089300000063 +:02089400000062 +:02089500000061 +:02089600000060 +:0208970000005F +:0208980000005E +:0208990000005D +:02089A0000005C +:02089B0000005B +:02089C0000005A +:02089D00000059 +:02089E00000058 +:02089F00000057 +:0208A000000056 +:0208A100000055 +:0208A200000054 +:0208A300000053 +:0208A400000052 +:0208A500000051 +:0208A600000050 +:0208A70000004F +:0208A80000004E +:0208A90000004D +:0208AA0000004C +:0208AB0000004B +:0208AC0000004A +:0208AD00000049 +:0208AE00000048 +:0208AF00000047 +:0208B000000046 +:0208B100000045 +:0208B200000044 +:0208B300000043 +:0208B400000042 +:0208B500000041 +:0208B600000040 +:0208B70000003F +:0208B80000003E +:0208B90000003D +:0208BA0000003C +:0208BB0000003B +:0208BC0000003A +:0208BD00000039 +:0208BE00000038 +:0208BF00000037 +:0208C000000036 +:0208C100000035 +:0208C200000034 +:0208C300000033 +:0208C400000032 +:0208C500000031 +:0208C600000030 +:0208C70000002F +:0208C80000002E +:0208C90000002D +:0208CA0000002C +:0208CB0000002B +:0208CC0000002A +:0208CD00000029 +:0208CE00000028 +:0208CF00000027 +:0208D000000026 +:0208D100000025 +:0208D200000024 +:0208D300000023 +:0208D400000022 +:0208D500000021 +:0208D600000020 +:0208D70000001F +:0208D80000001E +:0208D90000001D +:0208DA0000001C +:0208DB0000001B +:0208DC0000001A +:0208DD00000019 +:0208DE00000018 +:0208DF00000017 +:0208E000000016 +:0208E100000015 +:0208E200000014 +:0208E300000013 +:0208E400000012 +:0208E500000011 +:0208E600000010 +:0208E70000000F +:0208E80000000E +:0208E90000000D +:0208EA0000000C +:0208EB0000000B +:0208EC0000000A +:0208ED00000009 +:0208EE00000008 +:0208EF00000007 +:0208F000000006 +:0208F100000005 +:0208F200000004 +:0208F300000003 +:0208F400000002 +:0208F500000001 +:0208F600000000 +:0208F7000000FF +:0208F8000000FE +:0208F9000000FD +:0208FA000000FC +:0208FB000000FB +:0208FC000000FA +:0208FD000000F9 +:0208FE000000F8 +:0208FF000000F7 +:020900000000F5 +:020901000000F4 +:020902000000F3 +:020903000000F2 +:020904000000F1 +:020905000000F0 +:020906000000EF +:020907000000EE +:020908000000ED +:020909000000EC +:02090A000000EB +:02090B000000EA +:02090C000000E9 +:02090D000000E8 +:02090E000000E7 +:02090F000000E6 +:020910000000E5 +:020911000000E4 +:020912000000E3 +:020913000000E2 +:020914000000E1 +:020915000000E0 +:020916000000DF +:020917000000DE +:020918000000DD +:020919000000DC +:02091A000000DB +:02091B000000DA +:02091C000000D9 +:02091D000000D8 +:02091E000000D7 +:02091F000000D6 +:020920000000D5 +:020921000000D4 +:020922000000D3 +:020923000000D2 +:020924000000D1 +:020925000000D0 +:020926000000CF +:020927000000CE +:020928000000CD +:020929000000CC +:02092A000000CB +:02092B000000CA +:02092C000000C9 +:02092D000000C8 +:02092E000000C7 +:02092F000000C6 +:020930000000C5 +:020931000000C4 +:020932000000C3 +:020933000000C2 +:020934000000C1 +:020935000000C0 +:020936000000BF +:020937000000BE +:020938000000BD +:020939000000BC +:02093A000000BB +:02093B000000BA +:02093C000000B9 +:02093D000000B8 +:02093E000000B7 +:02093F000000B6 +:020940000000B5 +:020941000000B4 +:020942000000B3 +:020943000000B2 +:020944000000B1 +:020945000000B0 +:020946000000AF +:020947000000AE +:020948000000AD +:020949000000AC +:02094A000000AB +:02094B000000AA +:02094C000000A9 +:02094D000000A8 +:02094E000000A7 +:02094F000000A6 +:020950000000A5 +:020951000000A4 +:020952000000A3 +:020953000000A2 +:020954000000A1 +:020955000000A0 +:0209560000009F +:0209570000009E +:0209580000009D +:0209590000009C +:02095A0000009B +:02095B0000009A +:02095C00000099 +:02095D00000098 +:02095E00000097 +:02095F00000096 +:02096000000095 +:02096100000094 +:02096200000093 +:02096300000092 +:02096400000091 +:02096500000090 +:0209660000008F +:0209670000008E +:0209680000008D +:0209690000008C +:02096A0000008B +:02096B0000008A +:02096C00000089 +:02096D00000088 +:02096E00000087 +:02096F00000086 +:02097000000085 +:02097100000084 +:02097200000083 +:02097300000082 +:02097400000081 +:02097500000080 +:0209760000007F +:0209770000007E +:0209780000007D +:0209790000007C +:02097A0000007B +:02097B0000007A +:02097C00000079 +:02097D00000078 +:02097E00000077 +:02097F00000076 +:02098000000075 +:02098100000074 +:02098200000073 +:02098300000072 +:02098400000071 +:02098500000070 +:0209860000006F +:0209870000006E +:0209880000006D +:0209890000006C +:02098A0000006B +:02098B0000006A +:02098C00000069 +:02098D00000068 +:02098E00000067 +:02098F00000066 +:02099000000065 +:02099100000064 +:02099200000063 +:02099300000062 +:02099400000061 +:02099500000060 +:0209960000005F +:0209970000005E +:0209980000005D +:0209990000005C +:02099A0000005B +:02099B0000005A +:02099C00000059 +:02099D00000058 +:02099E00000057 +:02099F00000056 +:0209A000000055 +:0209A100000054 +:0209A200000053 +:0209A300000052 +:0209A400000051 +:0209A500000050 +:0209A60000004F +:0209A70000004E +:0209A80000004D +:0209A90000004C +:0209AA0000004B +:0209AB0000004A +:0209AC00000049 +:0209AD00000048 +:0209AE00000047 +:0209AF00000046 +:0209B000000045 +:0209B100000044 +:0209B200000043 +:0209B300000042 +:0209B400000041 +:0209B500000040 +:0209B60000003F +:0209B70000003E +:0209B80000003D +:0209B90000003C +:0209BA0000003B +:0209BB0000003A +:0209BC00000039 +:0209BD00000038 +:0209BE00000037 +:0209BF00000036 +:0209C000000035 +:0209C100000034 +:0209C200000033 +:0209C300000032 +:0209C400000031 +:0209C500000030 +:0209C60000002F +:0209C70000002E +:0209C80000002D +:0209C90000002C +:0209CA0000002B +:0209CB0000002A +:0209CC00000029 +:0209CD00000028 +:0209CE00000027 +:0209CF00000026 +:0209D000000025 +:0209D100000024 +:0209D200000023 +:0209D300000022 +:0209D400000021 +:0209D500000020 +:0209D60000001F +:0209D70000001E +:0209D80000001D +:0209D90000001C +:0209DA0000001B +:0209DB0000001A +:0209DC00000019 +:0209DD00000018 +:0209DE00000017 +:0209DF00000016 +:0209E000000015 +:0209E100000014 +:0209E200000013 +:0209E300000012 +:0209E400000011 +:0209E500000010 +:0209E60000000F +:0209E70000000E +:0209E80000000D +:0209E90000000C +:0209EA0000000B +:0209EB0000000A +:0209EC00000009 +:0209ED00000008 +:0209EE00000007 +:0209EF00000006 +:0209F000000005 +:0209F100000004 +:0209F200000003 +:0209F300000002 +:0209F400000001 +:0209F500000000 +:0209F6000000FF +:0209F7000000FE +:0209F8000000FD +:0209F9000000FC +:0209FA000000FB +:0209FB000000FA +:0209FC000000F9 +:0209FD000000F8 +:0209FE000000F7 +:0209FF000000F6 +:020A00000000F4 +:020A01000000F3 +:020A02000000F2 +:020A03000000F1 +:020A04000000F0 +:020A05000000EF +:020A06000000EE +:020A07000000ED +:020A08000000EC +:020A09000000EB +:020A0A000000EA +:020A0B000000E9 +:020A0C000000E8 +:020A0D000000E7 +:020A0E000000E6 +:020A0F000000E5 +:020A10000000E4 +:020A11000000E3 +:020A12000000E2 +:020A13000000E1 +:020A14000000E0 +:020A15000000DF +:020A16000000DE +:020A17000000DD +:020A18000000DC +:020A19000000DB +:020A1A000000DA +:020A1B000000D9 +:020A1C000000D8 +:020A1D000000D7 +:020A1E000000D6 +:020A1F000000D5 +:020A20000000D4 +:020A21000000D3 +:020A22000000D2 +:020A23000000D1 +:020A24000000D0 +:020A25000000CF +:020A26000000CE +:020A27000000CD +:020A28000000CC +:020A29000000CB +:020A2A000000CA +:020A2B000000C9 +:020A2C000000C8 +:020A2D000000C7 +:020A2E000000C6 +:020A2F000000C5 +:020A30000000C4 +:020A31000000C3 +:020A32000000C2 +:020A33000000C1 +:020A34000000C0 +:020A35000000BF +:020A36000000BE +:020A37000000BD +:020A38000000BC +:020A39000000BB +:020A3A000000BA +:020A3B000000B9 +:020A3C000000B8 +:020A3D000000B7 +:020A3E000000B6 +:020A3F000000B5 +:020A40000000B4 +:020A41000000B3 +:020A42000000B2 +:020A43000000B1 +:020A44000000B0 +:020A45000000AF +:020A46000000AE +:020A47000000AD +:020A48000000AC +:020A49000000AB +:020A4A000000AA +:020A4B000000A9 +:020A4C000000A8 +:020A4D000000A7 +:020A4E000000A6 +:020A4F000000A5 +:020A50000000A4 +:020A51000000A3 +:020A52000000A2 +:020A53000000A1 +:020A54000000A0 +:020A550000009F +:020A560000009E +:020A570000009D +:020A580000009C +:020A590000009B +:020A5A0000009A +:020A5B00000099 +:020A5C00000098 +:020A5D00000097 +:020A5E00000096 +:020A5F00000095 +:020A6000000094 +:020A6100000093 +:020A6200000092 +:020A6300000091 +:020A6400000090 +:020A650000008F +:020A660000008E +:020A670000008D +:020A680000008C +:020A690000008B +:020A6A0000008A +:020A6B00000089 +:020A6C00000088 +:020A6D00000087 +:020A6E00000086 +:020A6F00000085 +:020A7000000084 +:020A7100000083 +:020A7200000082 +:020A7300000081 +:020A7400000080 +:020A750000007F +:020A760000007E +:020A770000007D +:020A780000007C +:020A790000007B +:020A7A0000007A +:020A7B00000079 +:020A7C00000078 +:020A7D00000077 +:020A7E00000076 +:020A7F00000075 +:020A8000000074 +:020A8100000073 +:020A8200000072 +:020A8300000071 +:020A8400000070 +:020A850000006F +:020A860000006E +:020A870000006D +:020A880000006C +:020A890000006B +:020A8A0000006A +:020A8B00000069 +:020A8C00000068 +:020A8D00000067 +:020A8E00000066 +:020A8F00000065 +:020A9000000064 +:020A9100000063 +:020A9200000062 +:020A9300000061 +:020A9400000060 +:020A950000005F +:020A960000005E +:020A970000005D +:020A980000005C +:020A990000005B +:020A9A0000005A +:020A9B00000059 +:020A9C00000058 +:020A9D00000057 +:020A9E00000056 +:020A9F00000055 +:020AA000000054 +:020AA100000053 +:020AA200000052 +:020AA300000051 +:020AA400000050 +:020AA50000004F +:020AA60000004E +:020AA70000004D +:020AA80000004C +:020AA90000004B +:020AAA0000004A +:020AAB00000049 +:020AAC00000048 +:020AAD00000047 +:020AAE00000046 +:020AAF00000045 +:020AB000000044 +:020AB100000043 +:020AB200000042 +:020AB300000041 +:020AB400000040 +:020AB50000003F +:020AB60000003E +:020AB70000003D +:020AB80000003C +:020AB90000003B +:020ABA0000003A +:020ABB00000039 +:020ABC00000038 +:020ABD00000037 +:020ABE00000036 +:020ABF00000035 +:020AC000000034 +:020AC100000033 +:020AC200000032 +:020AC300000031 +:020AC400000030 +:020AC50000002F +:020AC60000002E +:020AC70000002D +:020AC80000002C +:020AC90000002B +:020ACA0000002A +:020ACB00000029 +:020ACC00000028 +:020ACD00000027 +:020ACE00000026 +:020ACF00000025 +:020AD000000024 +:020AD100000023 +:020AD200000022 +:020AD300000021 +:020AD400000020 +:020AD50000001F +:020AD60000001E +:020AD70000001D +:020AD80000001C +:020AD90000001B +:020ADA0000001A +:020ADB00000019 +:020ADC00000018 +:020ADD00000017 +:020ADE00000016 +:020ADF00000015 +:020AE000000014 +:020AE100000013 +:020AE200000012 +:020AE300000011 +:020AE400000010 +:020AE50000000F +:020AE60000000E +:020AE70000000D +:020AE80000000C +:020AE90000000B +:020AEA0000000A +:020AEB00000009 +:020AEC00000008 +:020AED00000007 +:020AEE00000006 +:020AEF00000005 +:020AF000000004 +:020AF100000003 +:020AF200000002 +:020AF300000001 +:020AF400000000 +:020AF5000000FF +:020AF6000000FE +:020AF7000000FD +:020AF8000000FC +:020AF9000000FB +:020AFA000000FA +:020AFB000000F9 +:020AFC000000F8 +:020AFD000000F7 +:020AFE000000F6 +:020AFF000000F5 +:020B00000000F3 +:020B01000000F2 +:020B02000000F1 +:020B03000000F0 +:020B04000000EF +:020B05000000EE +:020B06000000ED +:020B07000000EC +:020B08000000EB +:020B09000000EA +:020B0A000000E9 +:020B0B000000E8 +:020B0C000000E7 +:020B0D000000E6 +:020B0E000000E5 +:020B0F000000E4 +:020B10000000E3 +:020B11000000E2 +:020B12000000E1 +:020B13000000E0 +:020B14000000DF +:020B15000000DE +:020B16000000DD +:020B17000000DC +:020B18000000DB +:020B19000000DA +:020B1A000000D9 +:020B1B000000D8 +:020B1C000000D7 +:020B1D000000D6 +:020B1E000000D5 +:020B1F000000D4 +:020B20000000D3 +:020B21000000D2 +:020B22000000D1 +:020B23000000D0 +:020B24000000CF +:020B25000000CE +:020B26000000CD +:020B27000000CC +:020B28000000CB +:020B29000000CA +:020B2A000000C9 +:020B2B000000C8 +:020B2C000000C7 +:020B2D000000C6 +:020B2E000000C5 +:020B2F000000C4 +:020B30000000C3 +:020B31000000C2 +:020B32000000C1 +:020B33000000C0 +:020B34000000BF +:020B35000000BE +:020B36000000BD +:020B37000000BC +:020B38000000BB +:020B39000000BA +:020B3A000000B9 +:020B3B000000B8 +:020B3C000000B7 +:020B3D000000B6 +:020B3E000000B5 +:020B3F000000B4 +:020B40000000B3 +:020B41000000B2 +:020B42000000B1 +:020B43000000B0 +:020B44000000AF +:020B45000000AE +:020B46000000AD +:020B47000000AC +:020B48000000AB +:020B49000000AA +:020B4A000000A9 +:020B4B000000A8 +:020B4C000000A7 +:020B4D000000A6 +:020B4E000000A5 +:020B4F000000A4 +:020B50000000A3 +:020B51000000A2 +:020B52000000A1 +:020B53000000A0 +:020B540000009F +:020B550000009E +:020B560000009D +:020B570000009C +:020B580000009B +:020B590000009A +:020B5A00000099 +:020B5B00000098 +:020B5C00000097 +:020B5D00000096 +:020B5E00000095 +:020B5F00000094 +:020B6000000093 +:020B6100000092 +:020B6200000091 +:020B6300000090 +:020B640000008F +:020B650000008E +:020B660000008D +:020B670000008C +:020B680000008B +:020B690000008A +:020B6A00000089 +:020B6B00000088 +:020B6C00000087 +:020B6D00000086 +:020B6E00000085 +:020B6F00000084 +:020B7000000083 +:020B7100000082 +:020B7200000081 +:020B7300000080 +:020B740000007F +:020B750000007E +:020B760000007D +:020B770000007C +:020B780000007B +:020B790000007A +:020B7A00000079 +:020B7B00000078 +:020B7C00000077 +:020B7D00000076 +:020B7E00000075 +:020B7F00000074 +:020B8000000073 +:020B8100000072 +:020B8200000071 +:020B8300000070 +:020B840000006F +:020B850000006E +:020B860000006D +:020B870000006C +:020B880000006B +:020B890000006A +:020B8A00000069 +:020B8B00000068 +:020B8C00000067 +:020B8D00000066 +:020B8E00000065 +:020B8F00000064 +:020B9000000063 +:020B9100000062 +:020B9200000061 +:020B9300000060 +:020B940000005F +:020B950000005E +:020B960000005D +:020B970000005C +:020B980000005B +:020B990000005A +:020B9A00000059 +:020B9B00000058 +:020B9C00000057 +:020B9D00000056 +:020B9E00000055 +:020B9F00000054 +:020BA000000053 +:020BA100000052 +:020BA200000051 +:020BA300000050 +:020BA40000004F +:020BA50000004E +:020BA60000004D +:020BA70000004C +:020BA80000004B +:020BA90000004A +:020BAA00000049 +:020BAB00000048 +:020BAC00000047 +:020BAD00000046 +:020BAE00000045 +:020BAF00000044 +:020BB000000043 +:020BB100000042 +:020BB200000041 +:020BB300000040 +:020BB40000003F +:020BB50000003E +:020BB60000003D +:020BB70000003C +:020BB80000003B +:020BB90000003A +:020BBA00000039 +:020BBB00000038 +:020BBC00000037 +:020BBD00000036 +:020BBE00000035 +:020BBF00000034 +:020BC000000033 +:020BC100000032 +:020BC200000031 +:020BC300000030 +:020BC40000002F +:020BC50000002E +:020BC60000002D +:020BC70000002C +:020BC80000002B +:020BC90000002A +:020BCA00000029 +:020BCB00000028 +:020BCC00000027 +:020BCD00000026 +:020BCE00000025 +:020BCF00000024 +:020BD000000023 +:020BD100000022 +:020BD200000021 +:020BD300000020 +:020BD40000001F +:020BD50000001E +:020BD60000001D +:020BD70000001C +:020BD80000001B +:020BD90000001A +:020BDA00000019 +:020BDB00000018 +:020BDC00000017 +:020BDD00000016 +:020BDE00000015 +:020BDF00000014 +:020BE000000013 +:020BE100000012 +:020BE200000011 +:020BE300000010 +:020BE40000000F +:020BE50000000E +:020BE60000000D +:020BE70000000C +:020BE80000000B +:020BE90000000A +:020BEA00000009 +:020BEB00000008 +:020BEC00000007 +:020BED00000006 +:020BEE00000005 +:020BEF00000004 +:020BF000000003 +:020BF100000002 +:020BF200000001 +:020BF300000000 +:020BF4000000FF +:020BF5000000FE +:020BF6000000FD +:020BF7000000FC +:020BF8000000FB +:020BF9000000FA +:020BFA000000F9 +:020BFB000000F8 +:020BFC000000F7 +:020BFD000000F6 +:020BFE000000F5 +:020BFF000000F4 +:020C00000000F2 +:020C01000000F1 +:020C02000000F0 +:020C03000000EF +:020C04000000EE +:020C05000000ED +:020C06000000EC +:020C07000000EB +:020C08000000EA +:020C09000000E9 +:020C0A000000E8 +:020C0B000000E7 +:020C0C000000E6 +:020C0D000000E5 +:020C0E000000E4 +:020C0F000000E3 +:020C10000000E2 +:020C11000000E1 +:020C12000000E0 +:020C13000000DF +:020C14000000DE +:020C15000000DD +:020C16000000DC +:020C17000000DB +:020C18000000DA +:020C19000000D9 +:020C1A000000D8 +:020C1B000000D7 +:020C1C000000D6 +:020C1D000000D5 +:020C1E000000D4 +:020C1F000000D3 +:020C20000000D2 +:020C21000000D1 +:020C22000000D0 +:020C23000000CF +:020C24000000CE +:020C25000000CD +:020C26000000CC +:020C27000000CB +:020C28000000CA +:020C29000000C9 +:020C2A000000C8 +:020C2B000000C7 +:020C2C000000C6 +:020C2D000000C5 +:020C2E000000C4 +:020C2F000000C3 +:020C30000000C2 +:020C31000000C1 +:020C32000000C0 +:020C33000000BF +:020C34000000BE +:020C35000000BD +:020C36000000BC +:020C37000000BB +:020C38000000BA +:020C39000000B9 +:020C3A000000B8 +:020C3B000000B7 +:020C3C000000B6 +:020C3D000000B5 +:020C3E000000B4 +:020C3F000000B3 +:020C40000000B2 +:020C41000000B1 +:020C42000000B0 +:020C43000000AF +:020C44000000AE +:020C45000000AD +:020C46000000AC +:020C47000000AB +:020C48000000AA +:020C49000000A9 +:020C4A000000A8 +:020C4B000000A7 +:020C4C000000A6 +:020C4D000000A5 +:020C4E000000A4 +:020C4F000000A3 +:020C50000000A2 +:020C51000000A1 +:020C52000000A0 +:020C530000009F +:020C540000009E +:020C550000009D +:020C560000009C +:020C570000009B +:020C580000009A +:020C5900000099 +:020C5A00000098 +:020C5B00000097 +:020C5C00000096 +:020C5D00000095 +:020C5E00000094 +:020C5F00000093 +:020C6000000092 +:020C6100000091 +:020C6200000090 +:020C630000008F +:020C640000008E +:020C650000008D +:020C660000008C +:020C670000008B +:020C680000008A +:020C6900000089 +:020C6A00000088 +:020C6B00000087 +:020C6C00000086 +:020C6D00000085 +:020C6E00000084 +:020C6F00000083 +:020C7000000082 +:020C7100000081 +:020C7200000080 +:020C730000007F +:020C740000007E +:020C750000007D +:020C760000007C +:020C770000007B +:020C780000007A +:020C7900000079 +:020C7A00000078 +:020C7B00000077 +:020C7C00000076 +:020C7D00000075 +:020C7E00000074 +:020C7F00000073 +:020C8000000072 +:020C8100000071 +:020C8200000070 +:020C830000006F +:020C840000006E +:020C850000006D +:020C860000006C +:020C870000006B +:020C880000006A +:020C8900000069 +:020C8A00000068 +:020C8B00000067 +:020C8C00000066 +:020C8D00000065 +:020C8E00000064 +:020C8F00000063 +:020C9000000062 +:020C9100000061 +:020C9200000060 +:020C930000005F +:020C940000005E +:020C950000005D +:020C960000005C +:020C970000005B +:020C980000005A +:020C9900000059 +:020C9A00000058 +:020C9B00000057 +:020C9C00000056 +:020C9D00000055 +:020C9E00000054 +:020C9F00000053 +:020CA000000052 +:020CA100000051 +:020CA200000050 +:020CA30000004F +:020CA40000004E +:020CA50000004D +:020CA60000004C +:020CA70000004B +:020CA80000004A +:020CA900000049 +:020CAA00000048 +:020CAB00000047 +:020CAC00000046 +:020CAD00000045 +:020CAE00000044 +:020CAF00000043 +:020CB000000042 +:020CB100000041 +:020CB200000040 +:020CB30000003F +:020CB40000003E +:020CB50000003D +:020CB60000003C +:020CB70000003B +:020CB80000003A +:020CB900000039 +:020CBA00000038 +:020CBB00000037 +:020CBC00000036 +:020CBD00000035 +:020CBE00000034 +:020CBF00000033 +:020CC000000032 +:020CC100000031 +:020CC200000030 +:020CC30000002F +:020CC40000002E +:020CC50000002D +:020CC60000002C +:020CC70000002B +:020CC80000002A +:020CC900000029 +:020CCA00000028 +:020CCB00000027 +:020CCC00000026 +:020CCD00000025 +:020CCE00000024 +:020CCF00000023 +:020CD000000022 +:020CD100000021 +:020CD200000020 +:020CD30000001F +:020CD40000001E +:020CD50000001D +:020CD60000001C +:020CD70000001B +:020CD80000001A +:020CD900000019 +:020CDA00000018 +:020CDB00000017 +:020CDC00000016 +:020CDD00000015 +:020CDE00000014 +:020CDF00000013 +:020CE000000012 +:020CE100000011 +:020CE200000010 +:020CE30000000F +:020CE40000000E +:020CE50000000D +:020CE60000000C +:020CE70000000B +:020CE80000000A +:020CE900000009 +:020CEA00000008 +:020CEB00000007 +:020CEC00000006 +:020CED00000005 +:020CEE00000004 +:020CEF00000003 +:020CF000000002 +:020CF100000001 +:020CF200000000 +:020CF3000000FF +:020CF4000000FE +:020CF5000000FD +:020CF6000000FC +:020CF7000000FB +:020CF8000000FA +:020CF9000000F9 +:020CFA000000F8 +:020CFB000000F7 +:020CFC000000F6 +:020CFD000000F5 +:020CFE000000F4 +:020CFF000000F3 +:020D00000000F1 +:020D01000000F0 +:020D02000000EF +:020D03000000EE +:020D04000000ED +:020D05000000EC +:020D06000000EB +:020D07000000EA +:020D08000000E9 +:020D09000000E8 +:020D0A000000E7 +:020D0B000000E6 +:020D0C000000E5 +:020D0D000000E4 +:020D0E000000E3 +:020D0F000000E2 +:020D10000000E1 +:020D11000000E0 +:020D12000000DF +:020D13000000DE +:020D14000000DD +:020D15000000DC +:020D16000000DB +:020D17000000DA +:020D18000000D9 +:020D19000000D8 +:020D1A000000D7 +:020D1B000000D6 +:020D1C000000D5 +:020D1D000000D4 +:020D1E000000D3 +:020D1F000000D2 +:020D20000000D1 +:020D21000000D0 +:020D22000000CF +:020D23000000CE +:020D24000000CD +:020D25000000CC +:020D26000000CB +:020D27000000CA +:020D28000000C9 +:020D29000000C8 +:020D2A000000C7 +:020D2B000000C6 +:020D2C000000C5 +:020D2D000000C4 +:020D2E000000C3 +:020D2F000000C2 +:020D30000000C1 +:020D31000000C0 +:020D32000000BF +:020D33000000BE +:020D34000000BD +:020D35000000BC +:020D36000000BB +:020D37000000BA +:020D38000000B9 +:020D39000000B8 +:020D3A000000B7 +:020D3B000000B6 +:020D3C000000B5 +:020D3D000000B4 +:020D3E000000B3 +:020D3F000000B2 +:020D40000000B1 +:020D41000000B0 +:020D42000000AF +:020D43000000AE +:020D44000000AD +:020D45000000AC +:020D46000000AB +:020D47000000AA +:020D48000000A9 +:020D49000000A8 +:020D4A000000A7 +:020D4B000000A6 +:020D4C000000A5 +:020D4D000000A4 +:020D4E000000A3 +:020D4F000000A2 +:020D50000000A1 +:020D51000000A0 +:020D520000009F +:020D530000009E +:020D540000009D +:020D550000009C +:020D560000009B +:020D570000009A +:020D5800000099 +:020D5900000098 +:020D5A00000097 +:020D5B00000096 +:020D5C00000095 +:020D5D00000094 +:020D5E00000093 +:020D5F00000092 +:020D6000000091 +:020D6100000090 +:020D620000008F +:020D630000008E +:020D640000008D +:020D650000008C +:020D660000008B +:020D670000008A +:020D6800000089 +:020D6900000088 +:020D6A00000087 +:020D6B00000086 +:020D6C00000085 +:020D6D00000084 +:020D6E00000083 +:020D6F00000082 +:020D7000000081 +:020D7100000080 +:020D720000007F +:020D730000007E +:020D740000007D +:020D750000007C +:020D760000007B +:020D770000007A +:020D7800000079 +:020D7900000078 +:020D7A00000077 +:020D7B00000076 +:020D7C00000075 +:020D7D00000074 +:020D7E00000073 +:020D7F00000072 +:020D8000000071 +:020D8100000070 +:020D820000006F +:020D830000006E +:020D840000006D +:020D850000006C +:020D860000006B +:020D870000006A +:020D8800000069 +:020D8900000068 +:020D8A00000067 +:020D8B00000066 +:020D8C00000065 +:020D8D00000064 +:020D8E00000063 +:020D8F00000062 +:020D9000000061 +:020D9100000060 +:020D920000005F +:020D930000005E +:020D940000005D +:020D950000005C +:020D960000005B +:020D970000005A +:020D9800000059 +:020D9900000058 +:020D9A00000057 +:020D9B00000056 +:020D9C00000055 +:020D9D00000054 +:020D9E00000053 +:020D9F00000052 +:020DA000000051 +:020DA100000050 +:020DA20000004F +:020DA30000004E +:020DA40000004D +:020DA50000004C +:020DA60000004B +:020DA70000004A +:020DA800000049 +:020DA900000048 +:020DAA00000047 +:020DAB00000046 +:020DAC00000045 +:020DAD00000044 +:020DAE00000043 +:020DAF00000042 +:020DB000000041 +:020DB100000040 +:020DB20000003F +:020DB30000003E +:020DB40000003D +:020DB50000003C +:020DB60000003B +:020DB70000003A +:020DB800000039 +:020DB900000038 +:020DBA00000037 +:020DBB00000036 +:020DBC00000035 +:020DBD00000034 +:020DBE00000033 +:020DBF00000032 +:020DC000000031 +:020DC100000030 +:020DC20000002F +:020DC30000002E +:020DC40000002D +:020DC50000002C +:020DC60000002B +:020DC70000002A +:020DC800000029 +:020DC900000028 +:020DCA00000027 +:020DCB00000026 +:020DCC00000025 +:020DCD00000024 +:020DCE00000023 +:020DCF00000022 +:020DD000000021 +:020DD100000020 +:020DD20000001F +:020DD30000001E +:020DD40000001D +:020DD50000001C +:020DD60000001B +:020DD70000001A +:020DD800000019 +:020DD900000018 +:020DDA00000017 +:020DDB00000016 +:020DDC00000015 +:020DDD00000014 +:020DDE00000013 +:020DDF00000012 +:020DE000000011 +:020DE100000010 +:020DE20000000F +:020DE30000000E +:020DE40000000D +:020DE50000000C +:020DE60000000B +:020DE70000000A +:020DE800000009 +:020DE900000008 +:020DEA00000007 +:020DEB00000006 +:020DEC00000005 +:020DED00000004 +:020DEE00000003 +:020DEF00000002 +:020DF000000001 +:020DF100000000 +:020DF2000000FF +:020DF3000000FE +:020DF4000000FD +:020DF5000000FC +:020DF6000000FB +:020DF7000000FA +:020DF8000000F9 +:020DF9000000F8 +:020DFA000000F7 +:020DFB000000F6 +:020DFC000000F5 +:020DFD000000F4 +:020DFE000000F3 +:020DFF000000F2 +:020E00000000F0 +:020E01000000EF +:020E02000000EE +:020E03000000ED +:020E04000000EC +:020E05000000EB +:020E06000000EA +:020E07000000E9 +:020E08000000E8 +:020E09000000E7 +:020E0A000000E6 +:020E0B000000E5 +:020E0C000000E4 +:020E0D000000E3 +:020E0E000000E2 +:020E0F000000E1 +:020E10000000E0 +:020E11000000DF +:020E12000000DE +:020E13000000DD +:020E14000000DC +:020E15000000DB +:020E16000000DA +:020E17000000D9 +:020E18000000D8 +:020E19000000D7 +:020E1A000000D6 +:020E1B000000D5 +:020E1C000000D4 +:020E1D000000D3 +:020E1E000000D2 +:020E1F000000D1 +:020E20000000D0 +:020E21000000CF +:020E22000000CE +:020E23000000CD +:020E24000000CC +:020E25000000CB +:020E26000000CA +:020E27000000C9 +:020E28000000C8 +:020E29000000C7 +:020E2A000000C6 +:020E2B000000C5 +:020E2C000000C4 +:020E2D000000C3 +:020E2E000000C2 +:020E2F000000C1 +:020E30000000C0 +:020E31000000BF +:020E32000000BE +:020E33000000BD +:020E34000000BC +:020E35000000BB +:020E36000000BA +:020E37000000B9 +:020E38000000B8 +:020E39000000B7 +:020E3A000000B6 +:020E3B000000B5 +:020E3C000000B4 +:020E3D000000B3 +:020E3E000000B2 +:020E3F000000B1 +:020E40000000B0 +:020E41000000AF +:020E42000000AE +:020E43000000AD +:020E44000000AC +:020E45000000AB +:020E46000000AA +:020E47000000A9 +:020E48000000A8 +:020E49000000A7 +:020E4A000000A6 +:020E4B000000A5 +:020E4C000000A4 +:020E4D000000A3 +:020E4E000000A2 +:020E4F000000A1 +:020E50000000A0 +:020E510000009F +:020E520000009E +:020E530000009D +:020E540000009C +:020E550000009B +:020E560000009A +:020E5700000099 +:020E5800000098 +:020E5900000097 +:020E5A00000096 +:020E5B00000095 +:020E5C00000094 +:020E5D00000093 +:020E5E00000092 +:020E5F00000091 +:020E6000000090 +:020E610000008F +:020E620000008E +:020E630000008D +:020E640000008C +:020E650000008B +:020E660000008A +:020E6700000089 +:020E6800000088 +:020E6900000087 +:020E6A00000086 +:020E6B00000085 +:020E6C00000084 +:020E6D00000083 +:020E6E00000082 +:020E6F00000081 +:020E7000000080 +:020E710000007F +:020E720000007E +:020E730000007D +:020E740000007C +:020E750000007B +:020E760000007A +:020E7700000079 +:020E7800000078 +:020E7900000077 +:020E7A00000076 +:020E7B00000075 +:020E7C00000074 +:020E7D00000073 +:020E7E00000072 +:020E7F00000071 +:020E8000000070 +:020E810000006F +:020E820000006E +:020E830000006D +:020E840000006C +:020E850000006B +:020E860000006A +:020E8700000069 +:020E8800000068 +:020E8900000067 +:020E8A00000066 +:020E8B00000065 +:020E8C00000064 +:020E8D00000063 +:020E8E00000062 +:020E8F00000061 +:020E9000000060 +:020E910000005F +:020E920000005E +:020E930000005D +:020E940000005C +:020E950000005B +:020E960000005A +:020E9700000059 +:020E9800000058 +:020E9900000057 +:020E9A00000056 +:020E9B00000055 +:020E9C00000054 +:020E9D00000053 +:020E9E00000052 +:020E9F00000051 +:020EA000000050 +:020EA10000004F +:020EA20000004E +:020EA30000004D +:020EA40000004C +:020EA50000004B +:020EA60000004A +:020EA700000049 +:020EA800000048 +:020EA900000047 +:020EAA00000046 +:020EAB00000045 +:020EAC00000044 +:020EAD00000043 +:020EAE00000042 +:020EAF00000041 +:020EB000000040 +:020EB10000003F +:020EB20000003E +:020EB30000003D +:020EB40000003C +:020EB50000003B +:020EB60000003A +:020EB700000039 +:020EB800000038 +:020EB900000037 +:020EBA00000036 +:020EBB00000035 +:020EBC00000034 +:020EBD00000033 +:020EBE00000032 +:020EBF00000031 +:020EC000000030 +:020EC10000002F +:020EC20000002E +:020EC30000002D +:020EC40000002C +:020EC50000002B +:020EC60000002A +:020EC700000029 +:020EC800000028 +:020EC900000027 +:020ECA00000026 +:020ECB00000025 +:020ECC00000024 +:020ECD00000023 +:020ECE00000022 +:020ECF00000021 +:020ED000000020 +:020ED10000001F +:020ED20000001E +:020ED30000001D +:020ED40000001C +:020ED50000001B +:020ED60000001A +:020ED700000019 +:020ED800000018 +:020ED900000017 +:020EDA00000016 +:020EDB00000015 +:020EDC00000014 +:020EDD00000013 +:020EDE00000012 +:020EDF00000011 +:020EE000000010 +:020EE10000000F +:020EE20000000E +:020EE30000000D +:020EE40000000C +:020EE50000000B +:020EE60000000A +:020EE700000009 +:020EE800000008 +:020EE900000007 +:020EEA00000006 +:020EEB00000005 +:020EEC00000004 +:020EED00000003 +:020EEE00000002 +:020EEF00000001 +:020EF000000000 +:020EF1000000FF +:020EF2000000FE +:020EF3000000FD +:020EF4000000FC +:020EF5000000FB +:020EF6000000FA +:020EF7000000F9 +:020EF8000000F8 +:020EF9000000F7 +:020EFA000000F6 +:020EFB000000F5 +:020EFC000000F4 +:020EFD000000F3 +:020EFE000000F2 +:020EFF000000F1 +:020F00000000EF +:020F01000000EE +:020F02000000ED +:020F03000000EC +:020F04000000EB +:020F05000000EA +:020F06000000E9 +:020F07000000E8 +:020F08000000E7 +:020F09000000E6 +:020F0A000000E5 +:020F0B000000E4 +:020F0C000000E3 +:020F0D000000E2 +:020F0E000000E1 +:020F0F000000E0 +:020F10000000DF +:020F11000000DE +:020F12000000DD +:020F13000000DC +:020F14000000DB +:020F15000000DA +:020F16000000D9 +:020F17000000D8 +:020F18000000D7 +:020F19000000D6 +:020F1A000000D5 +:020F1B000000D4 +:020F1C000000D3 +:020F1D000000D2 +:020F1E000000D1 +:020F1F000000D0 +:020F20000000CF +:020F21000000CE +:020F22000000CD +:020F23000000CC +:020F24000000CB +:020F25000000CA +:020F26000000C9 +:020F27000000C8 +:020F28000000C7 +:020F29000000C6 +:020F2A000000C5 +:020F2B000000C4 +:020F2C000000C3 +:020F2D000000C2 +:020F2E000000C1 +:020F2F000000C0 +:020F30000000BF +:020F31000000BE +:020F32000000BD +:020F33000000BC +:020F34000000BB +:020F35000000BA +:020F36000000B9 +:020F37000000B8 +:020F38000000B7 +:020F39000000B6 +:020F3A000000B5 +:020F3B000000B4 +:020F3C000000B3 +:020F3D000000B2 +:020F3E000000B1 +:020F3F000000B0 +:020F40000000AF +:020F41000000AE +:020F42000000AD +:020F43000000AC +:020F44000000AB +:020F45000000AA +:020F46000000A9 +:020F47000000A8 +:020F48000000A7 +:020F49000000A6 +:020F4A000000A5 +:020F4B000000A4 +:020F4C000000A3 +:020F4D000000A2 +:020F4E000000A1 +:020F4F000000A0 +:020F500000009F +:020F510000009E +:020F520000009D +:020F530000009C +:020F540000009B +:020F550000009A +:020F5600000099 +:020F5700000098 +:020F5800000097 +:020F5900000096 +:020F5A00000095 +:020F5B00000094 +:020F5C00000093 +:020F5D00000092 +:020F5E00000091 +:020F5F00000090 +:020F600000008F +:020F610000008E +:020F620000008D +:020F630000008C +:020F640000008B +:020F650000008A +:020F6600000089 +:020F6700000088 +:020F6800000087 +:020F6900000086 +:020F6A00000085 +:020F6B00000084 +:020F6C00000083 +:020F6D00000082 +:020F6E00000081 +:020F6F00000080 +:020F700000007F +:020F710000007E +:020F720000007D +:020F730000007C +:020F740000007B +:020F750000007A +:020F7600000079 +:020F7700000078 +:020F7800000077 +:020F7900000076 +:020F7A00000075 +:020F7B00000074 +:020F7C00000073 +:020F7D00000072 +:020F7E00000071 +:020F7F00000070 +:020F800000006F +:020F810000006E +:020F820000006D +:020F830000006C +:020F840000006B +:020F850000006A +:020F8600000069 +:020F8700000068 +:020F8800000067 +:020F8900000066 +:020F8A00000065 +:020F8B00000064 +:020F8C00000063 +:020F8D00000062 +:020F8E00000061 +:020F8F00000060 +:020F900000005F +:020F910000005E +:020F920000005D +:020F930000005C +:020F940000005B +:020F950000005A +:020F9600000059 +:020F9700000058 +:020F9800000057 +:020F9900000056 +:020F9A00000055 +:020F9B00000054 +:020F9C00000053 +:020F9D00000052 +:020F9E00000051 +:020F9F00000050 +:020FA00000004F +:020FA10000004E +:020FA20000004D +:020FA30000004C +:020FA40000004B +:020FA50000004A +:020FA600000049 +:020FA700000048 +:020FA800000047 +:020FA900000046 +:020FAA00000045 +:020FAB00000044 +:020FAC00000043 +:020FAD00000042 +:020FAE00000041 +:020FAF00000040 +:020FB00000003F +:020FB10000003E +:020FB20000003D +:020FB30000003C +:020FB40000003B +:020FB50000003A +:020FB600000039 +:020FB700000038 +:020FB800000037 +:020FB900000036 +:020FBA00000035 +:020FBB00000034 +:020FBC00000033 +:020FBD00000032 +:020FBE00000031 +:020FBF00000030 +:020FC00000002F +:020FC10000002E +:020FC20000002D +:020FC30000002C +:020FC40000002B +:020FC50000002A +:020FC600000029 +:020FC700000028 +:020FC800000027 +:020FC900000026 +:020FCA00000025 +:020FCB00000024 +:020FCC00000023 +:020FCD00000022 +:020FCE00000021 +:020FCF00000020 +:020FD00000001F +:020FD10000001E +:020FD20000001D +:020FD30000001C +:020FD40000001B +:020FD50000001A +:020FD600000019 +:020FD700000018 +:020FD800000017 +:020FD900000016 +:020FDA00000015 +:020FDB00000014 +:020FDC00000013 +:020FDD00000012 +:020FDE00000011 +:020FDF00000010 +:020FE00000000F +:020FE10000000E +:020FE20000000D +:020FE30000000C +:020FE40000000B +:020FE50000000A +:020FE600000009 +:020FE700000008 +:020FE800000007 +:020FE900000006 +:020FEA00000005 +:020FEB00000004 +:020FEC00000003 +:020FED00000002 +:020FEE00000001 +:020FEF00000000 +:020FF0000000FF +:020FF1000000FE +:020FF2000000FD +:020FF3000000FC +:020FF4000000FB +:020FF5000000FA +:020FF6000000F9 +:020FF7000000F8 +:020FF8000000F7 +:020FF9000000F6 +:020FFA000000F5 +:020FFB000000F4 +:020FFC000000F3 +:020FFD000000F2 +:020FFE000000F1 +:020FFF000000F0 +:021000000000EE +:021001000000ED +:021002000000EC +:021003000000EB +:021004000000EA +:021005000000E9 +:021006000000E8 +:021007000000E7 +:021008000000E6 +:021009000000E5 +:02100A000000E4 +:02100B000000E3 +:02100C000000E2 +:02100D000000E1 +:02100E000000E0 +:02100F000000DF +:021010000000DE +:021011000000DD +:021012000000DC +:021013000000DB +:021014000000DA +:021015000000D9 +:021016000000D8 +:021017000000D7 +:021018000000D6 +:021019000000D5 +:02101A000000D4 +:02101B000000D3 +:02101C000000D2 +:02101D000000D1 +:02101E000000D0 +:02101F000000CF +:021020000000CE +:021021000000CD +:021022000000CC +:021023000000CB +:021024000000CA +:021025000000C9 +:021026000000C8 +:021027000000C7 +:021028000000C6 +:021029000000C5 +:02102A000000C4 +:02102B000000C3 +:02102C000000C2 +:02102D000000C1 +:02102E000000C0 +:02102F000000BF +:021030000000BE +:021031000000BD +:021032000000BC +:021033000000BB +:021034000000BA +:021035000000B9 +:021036000000B8 +:021037000000B7 +:021038000000B6 +:021039000000B5 +:02103A000000B4 +:02103B000000B3 +:02103C000000B2 +:02103D000000B1 +:02103E000000B0 +:02103F000000AF +:021040000000AE +:021041000000AD +:021042000000AC +:021043000000AB +:021044000000AA +:021045000000A9 +:021046000000A8 +:021047000000A7 +:021048000000A6 +:021049000000A5 +:02104A000000A4 +:02104B000000A3 +:02104C000000A2 +:02104D000000A1 +:02104E000000A0 +:02104F0000009F +:0210500000009E +:0210510000009D +:0210520000009C +:0210530000009B +:0210540000009A +:02105500000099 +:02105600000098 +:02105700000097 +:02105800000096 +:02105900000095 +:02105A00000094 +:02105B00000093 +:02105C00000092 +:02105D00000091 +:02105E00000090 +:02105F0000008F +:0210600000008E +:0210610000008D +:0210620000008C +:0210630000008B +:0210640000008A +:02106500000089 +:02106600000088 +:02106700000087 +:02106800000086 +:02106900000085 +:02106A00000084 +:02106B00000083 +:02106C00000082 +:02106D00000081 +:02106E00000080 +:02106F0000007F +:0210700000007E +:0210710000007D +:0210720000007C +:0210730000007B +:0210740000007A +:02107500000079 +:02107600000078 +:02107700000077 +:02107800000076 +:02107900000075 +:02107A00000074 +:02107B00000073 +:02107C00000072 +:02107D00000071 +:02107E00000070 +:02107F0000006F +:0210800000006E +:0210810000006D +:0210820000006C +:0210830000006B +:0210840000006A +:02108500000069 +:02108600000068 +:02108700000067 +:02108800000066 +:02108900000065 +:02108A00000064 +:02108B00000063 +:02108C00000062 +:02108D00000061 +:02108E00000060 +:02108F0000005F +:0210900000005E +:0210910000005D +:0210920000005C +:0210930000005B +:0210940000005A +:02109500000059 +:02109600000058 +:02109700000057 +:02109800000056 +:02109900000055 +:02109A00000054 +:02109B00000053 +:02109C00000052 +:02109D00000051 +:02109E00000050 +:02109F0000004F +:0210A00000004E +:0210A10000004D +:0210A20000004C +:0210A30000004B +:0210A40000004A +:0210A500000049 +:0210A600000048 +:0210A700000047 +:0210A800000046 +:0210A900000045 +:0210AA00000044 +:0210AB00000043 +:0210AC00000042 +:0210AD00000041 +:0210AE00000040 +:0210AF0000003F +:0210B00000003E +:0210B10000003D +:0210B20000003C +:0210B30000003B +:0210B40000003A +:0210B500000039 +:0210B600000038 +:0210B700000037 +:0210B800000036 +:0210B900000035 +:0210BA00000034 +:0210BB00000033 +:0210BC00000032 +:0210BD00000031 +:0210BE00000030 +:0210BF0000002F +:0210C00000002E +:0210C10000002D +:0210C20000002C +:0210C30000002B +:0210C40000002A +:0210C500000029 +:0210C600000028 +:0210C700000027 +:0210C800000026 +:0210C900000025 +:0210CA00000024 +:0210CB00000023 +:0210CC00000022 +:0210CD00000021 +:0210CE00000020 +:0210CF0000001F +:0210D00000001E +:0210D10000001D +:0210D20000001C +:0210D30000001B +:0210D40000001A +:0210D500000019 +:0210D600000018 +:0210D700000017 +:0210D800000016 +:0210D900000015 +:0210DA00000014 +:0210DB00000013 +:0210DC00000012 +:0210DD00000011 +:0210DE00000010 +:0210DF0000000F +:0210E00000000E +:0210E10000000D +:0210E20000000C +:0210E30000000B +:0210E40000000A +:0210E500000009 +:0210E600000008 +:0210E700000007 +:0210E800000006 +:0210E900000005 +:0210EA00000004 +:0210EB00000003 +:0210EC00000002 +:0210ED00000001 +:0210EE00000000 +:0210EF000000FF +:0210F0000000FE +:0210F1000000FD +:0210F2000000FC +:0210F3000000FB +:0210F4000000FA +:0210F5000000F9 +:0210F6000000F8 +:0210F7000000F7 +:0210F8000000F6 +:0210F9000000F5 +:0210FA000000F4 +:0210FB000000F3 +:0210FC000000F2 +:0210FD000000F1 +:0210FE000000F0 +:0210FF000000EF +:021100000000ED +:021101000000EC +:021102000000EB +:021103000000EA +:021104000000E9 +:021105000000E8 +:021106000000E7 +:021107000000E6 +:021108000000E5 +:021109000000E4 +:02110A000000E3 +:02110B000000E2 +:02110C000000E1 +:02110D000000E0 +:02110E000000DF +:02110F000000DE +:021110000000DD +:021111000000DC +:021112000000DB +:021113000000DA +:021114000000D9 +:021115000000D8 +:021116000000D7 +:021117000000D6 +:021118000000D5 +:021119000000D4 +:02111A000000D3 +:02111B000000D2 +:02111C000000D1 +:02111D000000D0 +:02111E000000CF +:02111F000000CE +:021120000000CD +:021121000000CC +:021122000000CB +:021123000000CA +:021124000000C9 +:021125000000C8 +:021126000000C7 +:021127000000C6 +:021128000000C5 +:021129000000C4 +:02112A000000C3 +:02112B000000C2 +:02112C000000C1 +:02112D000000C0 +:02112E000000BF +:02112F000000BE +:021130000000BD +:021131000000BC +:021132000000BB +:021133000000BA +:021134000000B9 +:021135000000B8 +:021136000000B7 +:021137000000B6 +:021138000000B5 +:021139000000B4 +:02113A000000B3 +:02113B000000B2 +:02113C000000B1 +:02113D000000B0 +:02113E000000AF +:02113F000000AE +:021140000000AD +:021141000000AC +:021142000000AB +:021143000000AA +:021144000000A9 +:021145000000A8 +:021146000000A7 +:021147000000A6 +:021148000000A5 +:021149000000A4 +:02114A000000A3 +:02114B000000A2 +:02114C000000A1 +:02114D000000A0 +:02114E0000009F +:02114F0000009E +:0211500000009D +:0211510000009C +:0211520000009B +:0211530000009A +:02115400000099 +:02115500000098 +:02115600000097 +:02115700000096 +:02115800000095 +:02115900000094 +:02115A00000093 +:02115B00000092 +:02115C00000091 +:02115D00000090 +:02115E0000008F +:02115F0000008E +:0211600000008D +:0211610000008C +:0211620000008B +:0211630000008A +:02116400000089 +:02116500000088 +:02116600000087 +:02116700000086 +:02116800000085 +:02116900000084 +:02116A00000083 +:02116B00000082 +:02116C00000081 +:02116D00000080 +:02116E0000007F +:02116F0000007E +:0211700000007D +:0211710000007C +:0211720000007B +:0211730000007A +:02117400000079 +:02117500000078 +:02117600000077 +:02117700000076 +:02117800000075 +:02117900000074 +:02117A00000073 +:02117B00000072 +:02117C00000071 +:02117D00000070 +:02117E0000006F +:02117F0000006E +:0211800000006D +:0211810000006C +:0211820000006B +:0211830000006A +:02118400000069 +:02118500000068 +:02118600000067 +:02118700000066 +:02118800000065 +:02118900000064 +:02118A00000063 +:02118B00000062 +:02118C00000061 +:02118D00000060 +:02118E0000005F +:02118F0000005E +:0211900000005D +:0211910000005C +:0211920000005B +:0211930000005A +:02119400000059 +:02119500000058 +:02119600000057 +:02119700000056 +:02119800000055 +:02119900000054 +:02119A00000053 +:02119B00000052 +:02119C00000051 +:02119D00000050 +:02119E0000004F +:02119F0000004E +:0211A00000004D +:0211A10000004C +:0211A20000004B +:0211A30000004A +:0211A400000049 +:0211A500000048 +:0211A600000047 +:0211A700000046 +:0211A800000045 +:0211A900000044 +:0211AA00000043 +:0211AB00000042 +:0211AC00000041 +:0211AD00000040 +:0211AE0000003F +:0211AF0000003E +:0211B00000003D +:0211B10000003C +:0211B20000003B +:0211B30000003A +:0211B400000039 +:0211B500000038 +:0211B600000037 +:0211B700000036 +:0211B800000035 +:0211B900000034 +:0211BA00000033 +:0211BB00000032 +:0211BC00000031 +:0211BD00000030 +:0211BE0000002F +:0211BF0000002E +:0211C00000002D +:0211C10000002C +:0211C20000002B +:0211C30000002A +:0211C400000029 +:0211C500000028 +:0211C600000027 +:0211C700000026 +:0211C800000025 +:0211C900000024 +:0211CA00000023 +:0211CB00000022 +:0211CC00000021 +:0211CD00000020 +:0211CE0000001F +:0211CF0000001E +:0211D00000001D +:0211D10000001C +:0211D20000001B +:0211D30000001A +:0211D400000019 +:0211D500000018 +:0211D600000017 +:0211D700000016 +:0211D800000015 +:0211D900000014 +:0211DA00000013 +:0211DB00000012 +:0211DC00000011 +:0211DD00000010 +:0211DE0000000F +:0211DF0000000E +:0211E00000000D +:0211E10000000C +:0211E20000000B +:0211E30000000A +:0211E400000009 +:0211E500000008 +:0211E600000007 +:0211E700000006 +:0211E800000005 +:0211E900000004 +:0211EA00000003 +:0211EB00000002 +:0211EC00000001 +:0211ED00000000 +:0211EE000000FF +:0211EF000000FE +:0211F0000000FD +:0211F1000000FC +:0211F2000000FB +:0211F3000000FA +:0211F4000000F9 +:0211F5000000F8 +:0211F6000000F7 +:0211F7000000F6 +:0211F8000000F5 +:0211F9000000F4 +:0211FA000000F3 +:0211FB000000F2 +:0211FC000000F1 +:0211FD000000F0 +:0211FE000000EF +:0211FF000000EE +:021200000000EC +:021201000000EB +:021202000000EA +:021203000000E9 +:021204000000E8 +:021205000000E7 +:021206000000E6 +:021207000000E5 +:021208000000E4 +:021209000000E3 +:02120A000000E2 +:02120B000000E1 +:02120C000000E0 +:02120D000000DF +:02120E000000DE +:02120F000000DD +:021210000000DC +:021211000000DB +:021212000000DA +:021213000000D9 +:021214000000D8 +:021215000000D7 +:021216000000D6 +:021217000000D5 +:021218000000D4 +:021219000000D3 +:02121A000000D2 +:02121B000000D1 +:02121C000000D0 +:02121D000000CF +:02121E000000CE +:02121F000000CD +:021220000000CC +:021221000000CB +:021222000000CA +:021223000000C9 +:021224000000C8 +:021225000000C7 +:021226000000C6 +:021227000000C5 +:021228000000C4 +:021229000000C3 +:02122A000000C2 +:02122B000000C1 +:02122C000000C0 +:02122D000000BF +:02122E000000BE +:02122F000000BD +:021230000000BC +:021231000000BB +:021232000000BA +:021233000000B9 +:021234000000B8 +:021235000000B7 +:021236000000B6 +:021237000000B5 +:021238000000B4 +:021239000000B3 +:02123A000000B2 +:02123B000000B1 +:02123C000000B0 +:02123D000000AF +:02123E000000AE +:02123F000000AD +:021240000000AC +:021241000000AB +:021242000000AA +:021243000000A9 +:021244000000A8 +:021245000000A7 +:021246000000A6 +:021247000000A5 +:021248000000A4 +:021249000000A3 +:02124A000000A2 +:02124B000000A1 +:02124C000000A0 +:02124D0000009F +:02124E0000009E +:02124F0000009D +:0212500000009C +:0212510000009B +:0212520000009A +:02125300000099 +:02125400000098 +:02125500000097 +:02125600000096 +:02125700000095 +:02125800000094 +:02125900000093 +:02125A00000092 +:02125B00000091 +:02125C00000090 +:02125D0000008F +:02125E0000008E +:02125F0000008D +:0212600000008C +:0212610000008B +:0212620000008A +:02126300000089 +:02126400000088 +:02126500000087 +:02126600000086 +:02126700000085 +:02126800000084 +:02126900000083 +:02126A00000082 +:02126B00000081 +:02126C00000080 +:02126D0000007F +:02126E0000007E +:02126F0000007D +:0212700000007C +:0212710000007B +:0212720000007A +:02127300000079 +:02127400000078 +:02127500000077 +:02127600000076 +:02127700000075 +:02127800000074 +:02127900000073 +:02127A00000072 +:02127B00000071 +:02127C00000070 +:02127D0000006F +:02127E0000006E +:02127F0000006D +:0212800000006C +:0212810000006B +:0212820000006A +:02128300000069 +:02128400000068 +:02128500000067 +:02128600000066 +:02128700000065 +:02128800000064 +:02128900000063 +:02128A00000062 +:02128B00000061 +:02128C00000060 +:02128D0000005F +:02128E0000005E +:02128F0000005D +:0212900000005C +:0212910000005B +:0212920000005A +:02129300000059 +:02129400000058 +:02129500000057 +:02129600000056 +:02129700000055 +:02129800000054 +:02129900000053 +:02129A00000052 +:02129B00000051 +:02129C00000050 +:02129D0000004F +:02129E0000004E +:02129F0000004D +:0212A00000004C +:0212A10000004B +:0212A20000004A +:0212A300000049 +:0212A400000048 +:0212A500000047 +:0212A600000046 +:0212A700000045 +:0212A800000044 +:0212A900000043 +:0212AA00000042 +:0212AB00000041 +:0212AC00000040 +:0212AD0000003F +:0212AE0000003E +:0212AF0000003D +:0212B00000003C +:0212B10000003B +:0212B20000003A +:0212B300000039 +:0212B400000038 +:0212B500000037 +:0212B600000036 +:0212B700000035 +:0212B800000034 +:0212B900000033 +:0212BA00000032 +:0212BB00000031 +:0212BC00000030 +:0212BD0000002F +:0212BE0000002E +:0212BF0000002D +:0212C00000002C +:0212C10000002B +:0212C20000002A +:0212C300000029 +:0212C400000028 +:0212C500000027 +:0212C600000026 +:0212C700000025 +:0212C800000024 +:0212C900000023 +:0212CA00000022 +:0212CB00000021 +:0212CC00000020 +:0212CD0000001F +:0212CE0000001E +:0212CF0000001D +:0212D00000001C +:0212D10000001B +:0212D20000001A +:0212D300000019 +:0212D400000018 +:0212D500000017 +:0212D600000016 +:0212D700000015 +:0212D800000014 +:0212D900000013 +:0212DA00000012 +:0212DB00000011 +:0212DC00000010 +:0212DD0000000F +:0212DE0000000E +:0212DF0000000D +:0212E00000000C +:0212E10000000B +:0212E20000000A +:0212E300000009 +:0212E400000008 +:0212E500000007 +:0212E600000006 +:0212E700000005 +:0212E800000004 +:0212E900000003 +:0212EA00000002 +:0212EB00000001 +:0212EC00000000 +:0212ED000000FF +:0212EE000000FE +:0212EF000000FD +:0212F0000000FC +:0212F1000000FB +:0212F2000000FA +:0212F3000000F9 +:0212F4000000F8 +:0212F5000000F7 +:0212F6000000F6 +:0212F7000000F5 +:0212F8000000F4 +:0212F9000000F3 +:0212FA000000F2 +:0212FB000000F1 +:0212FC000000F0 +:0212FD000000EF +:0212FE000000EE +:0212FF000000ED +:021300000000EB +:021301000000EA +:021302000000E9 +:021303000000E8 +:021304000000E7 +:021305000000E6 +:021306000000E5 +:021307000000E4 +:021308000000E3 +:021309000000E2 +:02130A000000E1 +:02130B000000E0 +:02130C000000DF +:02130D000000DE +:02130E000000DD +:02130F000000DC +:021310000000DB +:021311000000DA +:021312000000D9 +:021313000000D8 +:021314000000D7 +:021315000000D6 +:021316000000D5 +:021317000000D4 +:021318000000D3 +:021319000000D2 +:02131A000000D1 +:02131B000000D0 +:02131C000000CF +:02131D000000CE +:02131E000000CD +:02131F000000CC +:021320000000CB +:021321000000CA +:021322000000C9 +:021323000000C8 +:021324000000C7 +:021325000000C6 +:021326000000C5 +:021327000000C4 +:021328000000C3 +:021329000000C2 +:02132A000000C1 +:02132B000000C0 +:02132C000000BF +:02132D000000BE +:02132E000000BD +:02132F000000BC +:021330000000BB +:021331000000BA +:021332000000B9 +:021333000000B8 +:021334000000B7 +:021335000000B6 +:021336000000B5 +:021337000000B4 +:021338000000B3 +:021339000000B2 +:02133A000000B1 +:02133B000000B0 +:02133C000000AF +:02133D000000AE +:02133E000000AD +:02133F000000AC +:021340000000AB +:021341000000AA +:021342000000A9 +:021343000000A8 +:021344000000A7 +:021345000000A6 +:021346000000A5 +:021347000000A4 +:021348000000A3 +:021349000000A2 +:02134A000000A1 +:02134B000000A0 +:02134C0000009F +:02134D0000009E +:02134E0000009D +:02134F0000009C +:0213500000009B +:0213510000009A +:02135200000099 +:02135300000098 +:02135400000097 +:02135500000096 +:02135600000095 +:02135700000094 +:02135800000093 +:02135900000092 +:02135A00000091 +:02135B00000090 +:02135C0000008F +:02135D0000008E +:02135E0000008D +:02135F0000008C +:0213600000008B +:0213610000008A +:02136200000089 +:02136300000088 +:02136400000087 +:02136500000086 +:02136600000085 +:02136700000084 +:02136800000083 +:02136900000082 +:02136A00000081 +:02136B00000080 +:02136C0000007F +:02136D0000007E +:02136E0000007D +:02136F0000007C +:0213700000007B +:0213710000007A +:02137200000079 +:02137300000078 +:02137400000077 +:02137500000076 +:02137600000075 +:02137700000074 +:02137800000073 +:02137900000072 +:02137A00000071 +:02137B00000070 +:02137C0000006F +:02137D0000006E +:02137E0000006D +:02137F0000006C +:0213800000006B +:0213810000006A +:02138200000069 +:02138300000068 +:02138400000067 +:02138500000066 +:02138600000065 +:02138700000064 +:02138800000063 +:02138900000062 +:02138A00000061 +:02138B00000060 +:02138C0000005F +:02138D0000005E +:02138E0000005D +:02138F0000005C +:0213900000005B +:0213910000005A +:02139200000059 +:02139300000058 +:02139400000057 +:02139500000056 +:02139600000055 +:02139700000054 +:02139800000053 +:02139900000052 +:02139A00000051 +:02139B00000050 +:02139C0000004F +:02139D0000004E +:02139E0000004D +:02139F0000004C +:0213A00000004B +:0213A10000004A +:0213A200000049 +:0213A300000048 +:0213A400000047 +:0213A500000046 +:0213A600000045 +:0213A700000044 +:0213A800000043 +:0213A900000042 +:0213AA00000041 +:0213AB00000040 +:0213AC0000003F +:0213AD0000003E +:0213AE0000003D +:0213AF0000003C +:0213B00000003B +:0213B10000003A +:0213B200000039 +:0213B300000038 +:0213B400000037 +:0213B500000036 +:0213B600000035 +:0213B700000034 +:0213B800000033 +:0213B900000032 +:0213BA00000031 +:0213BB00000030 +:0213BC0000002F +:0213BD0000002E +:0213BE0000002D +:0213BF0000002C +:0213C00000002B +:0213C10000002A +:0213C200000029 +:0213C300000028 +:0213C400000027 +:0213C500000026 +:0213C600000025 +:0213C700000024 +:0213C800000023 +:0213C900000022 +:0213CA00000021 +:0213CB00000020 +:0213CC0000001F +:0213CD0000001E +:0213CE0000001D +:0213CF0000001C +:0213D00000001B +:0213D10000001A +:0213D200000019 +:0213D300000018 +:0213D400000017 +:0213D500000016 +:0213D600000015 +:0213D700000014 +:0213D800000013 +:0213D900000012 +:0213DA00000011 +:0213DB00000010 +:0213DC0000000F +:0213DD0000000E +:0213DE0000000D +:0213DF0000000C +:0213E00000000B +:0213E10000000A +:0213E200000009 +:0213E300000008 +:0213E400000007 +:0213E500000006 +:0213E600000005 +:0213E700000004 +:0213E800000003 +:0213E900000002 +:0213EA00000001 +:0213EB00000000 +:0213EC000000FF +:0213ED000000FE +:0213EE000000FD +:0213EF000000FC +:0213F0000000FB +:0213F1000000FA +:0213F2000000F9 +:0213F3000000F8 +:0213F4000000F7 +:0213F5000000F6 +:0213F6000000F5 +:0213F7000000F4 +:0213F8000000F3 +:0213F9000000F2 +:0213FA000000F1 +:0213FB000000F0 +:0213FC000000EF +:0213FD000000EE +:0213FE000000ED +:0213FF000000EC +:021400000000EA +:021401000000E9 +:021402000000E8 +:021403000000E7 +:021404000000E6 +:021405000000E5 +:021406000000E4 +:021407000000E3 +:021408000000E2 +:021409000000E1 +:02140A000000E0 +:02140B000000DF +:02140C000000DE +:02140D000000DD +:02140E000000DC +:02140F000000DB +:021410000000DA +:021411000000D9 +:021412000000D8 +:021413000000D7 +:021414000000D6 +:021415000000D5 +:021416000000D4 +:021417000000D3 +:021418000000D2 +:021419000000D1 +:02141A000000D0 +:02141B000000CF +:02141C000000CE +:02141D000000CD +:02141E000000CC +:02141F000000CB +:021420000000CA +:021421000000C9 +:021422000000C8 +:021423000000C7 +:021424000000C6 +:021425000000C5 +:021426000000C4 +:021427000000C3 +:021428000000C2 +:021429000000C1 +:02142A000000C0 +:02142B000000BF +:02142C000000BE +:02142D000000BD +:02142E000000BC +:02142F000000BB +:021430000000BA +:021431000000B9 +:021432000000B8 +:021433000000B7 +:021434000000B6 +:021435000000B5 +:021436000000B4 +:021437000000B3 +:021438000000B2 +:021439000000B1 +:02143A000000B0 +:02143B000000AF +:02143C000000AE +:02143D000000AD +:02143E000000AC +:02143F000000AB +:021440000000AA +:021441000000A9 +:021442000000A8 +:021443000000A7 +:021444000000A6 +:021445000000A5 +:021446000000A4 +:021447000000A3 +:021448000000A2 +:021449000000A1 +:02144A000000A0 +:02144B0000009F +:02144C0000009E +:02144D0000009D +:02144E0000009C +:02144F0000009B +:0214500000009A +:02145100000099 +:02145200000098 +:02145300000097 +:02145400000096 +:02145500000095 +:02145600000094 +:02145700000093 +:02145800000092 +:02145900000091 +:02145A00000090 +:02145B0000008F +:02145C0000008E +:02145D0000008D +:02145E0000008C +:02145F0000008B +:0214600000008A +:02146100000089 +:02146200000088 +:02146300000087 +:02146400000086 +:02146500000085 +:02146600000084 +:02146700000083 +:02146800000082 +:02146900000081 +:02146A00000080 +:02146B0000007F +:02146C0000007E +:02146D0000007D +:02146E0000007C +:02146F0000007B +:0214700000007A +:02147100000079 +:02147200000078 +:02147300000077 +:02147400000076 +:02147500000075 +:02147600000074 +:02147700000073 +:02147800000072 +:02147900000071 +:02147A00000070 +:02147B0000006F +:02147C0000006E +:02147D0000006D +:02147E0000006C +:02147F0000006B +:0214800000006A +:02148100000069 +:02148200000068 +:02148300000067 +:02148400000066 +:02148500000065 +:02148600000064 +:02148700000063 +:02148800000062 +:02148900000061 +:02148A00000060 +:02148B0000005F +:02148C0000005E +:02148D0000005D +:02148E0000005C +:02148F0000005B +:0214900000005A +:02149100000059 +:02149200000058 +:02149300000057 +:02149400000056 +:02149500000055 +:02149600000054 +:02149700000053 +:02149800000052 +:02149900000051 +:02149A00000050 +:02149B0000004F +:02149C0000004E +:02149D0000004D +:02149E0000004C +:02149F0000004B +:0214A00000004A +:0214A100000049 +:0214A200000048 +:0214A300000047 +:0214A400000046 +:0214A500000045 +:0214A600000044 +:0214A700000043 +:0214A800000042 +:0214A900000041 +:0214AA00000040 +:0214AB0000003F +:0214AC0000003E +:0214AD0000003D +:0214AE0000003C +:0214AF0000003B +:0214B00000003A +:0214B100000039 +:0214B200000038 +:0214B300000037 +:0214B400000036 +:0214B500000035 +:0214B600000034 +:0214B700000033 +:0214B800000032 +:0214B900000031 +:0214BA00000030 +:0214BB0000002F +:0214BC0000002E +:0214BD0000002D +:0214BE0000002C +:0214BF0000002B +:0214C00000002A +:0214C100000029 +:0214C200000028 +:0214C300000027 +:0214C400000026 +:0214C500000025 +:0214C600000024 +:0214C700000023 +:0214C800000022 +:0214C900000021 +:0214CA00000020 +:0214CB0000001F +:0214CC0000001E +:0214CD0000001D +:0214CE0000001C +:0214CF0000001B +:0214D00000001A +:0214D100000019 +:0214D200000018 +:0214D300000017 +:0214D400000016 +:0214D500000015 +:0214D600000014 +:0214D700000013 +:0214D800000012 +:0214D900000011 +:0214DA00000010 +:0214DB0000000F +:0214DC0000000E +:0214DD0000000D +:0214DE0000000C +:0214DF0000000B +:0214E00000000A +:0214E100000009 +:0214E200000008 +:0214E300000007 +:0214E400000006 +:0214E500000005 +:0214E600000004 +:0214E700000003 +:0214E800000002 +:0214E900000001 +:0214EA00000000 +:0214EB000000FF +:0214EC000000FE +:0214ED000000FD +:0214EE000000FC +:0214EF000000FB +:0214F0000000FA +:0214F1000000F9 +:0214F2000000F8 +:0214F3000000F7 +:0214F4000000F6 +:0214F5000000F5 +:0214F6000000F4 +:0214F7000000F3 +:0214F8000000F2 +:0214F9000000F1 +:0214FA000000F0 +:0214FB000000EF +:0214FC000000EE +:0214FD000000ED +:0214FE000000EC +:0214FF000000EB +:021500000000E9 +:021501000000E8 +:021502000000E7 +:021503000000E6 +:021504000000E5 +:021505000000E4 +:021506000000E3 +:021507000000E2 +:021508000000E1 +:021509000000E0 +:02150A000000DF +:02150B000000DE +:02150C000000DD +:02150D000000DC +:02150E000000DB +:02150F000000DA +:021510000000D9 +:021511000000D8 +:021512000000D7 +:021513000000D6 +:021514000000D5 +:021515000000D4 +:021516000000D3 +:021517000000D2 +:021518000000D1 +:021519000000D0 +:02151A000000CF +:02151B000000CE +:02151C000000CD +:02151D000000CC +:02151E000000CB +:02151F000000CA +:021520000000C9 +:021521000000C8 +:021522000000C7 +:021523000000C6 +:021524000000C5 +:021525000000C4 +:021526000000C3 +:021527000000C2 +:021528000000C1 +:021529000000C0 +:02152A000000BF +:02152B000000BE +:02152C000000BD +:02152D000000BC +:02152E000000BB +:02152F000000BA +:021530000000B9 +:021531000000B8 +:021532000000B7 +:021533000000B6 +:021534000000B5 +:021535000000B4 +:021536000000B3 +:021537000000B2 +:021538000000B1 +:021539000000B0 +:02153A000000AF +:02153B000000AE +:02153C000000AD +:02153D000000AC +:02153E000000AB +:02153F000000AA +:021540000000A9 +:021541000000A8 +:021542000000A7 +:021543000000A6 +:021544000000A5 +:021545000000A4 +:021546000000A3 +:021547000000A2 +:021548000000A1 +:021549000000A0 +:02154A0000009F +:02154B0000009E +:02154C0000009D +:02154D0000009C +:02154E0000009B +:02154F0000009A +:02155000000099 +:02155100000098 +:02155200000097 +:02155300000096 +:02155400000095 +:02155500000094 +:02155600000093 +:02155700000092 +:02155800000091 +:02155900000090 +:02155A0000008F +:02155B0000008E +:02155C0000008D +:02155D0000008C +:02155E0000008B +:02155F0000008A +:02156000000089 +:02156100000088 +:02156200000087 +:02156300000086 +:02156400000085 +:02156500000084 +:02156600000083 +:02156700000082 +:02156800000081 +:02156900000080 +:02156A0000007F +:02156B0000007E +:02156C0000007D +:02156D0000007C +:02156E0000007B +:02156F0000007A +:02157000000079 +:02157100000078 +:02157200000077 +:02157300000076 +:02157400000075 +:02157500000074 +:02157600000073 +:02157700000072 +:02157800000071 +:02157900000070 +:02157A0000006F +:02157B0000006E +:02157C0000006D +:02157D0000006C +:02157E0000006B +:02157F0000006A +:02158000000069 +:02158100000068 +:02158200000067 +:02158300000066 +:02158400000065 +:02158500000064 +:02158600000063 +:02158700000062 +:02158800000061 +:02158900000060 +:02158A0000005F +:02158B0000005E +:02158C0000005D +:02158D0000005C +:02158E0000005B +:02158F0000005A +:02159000000059 +:02159100000058 +:02159200000057 +:02159300000056 +:02159400000055 +:02159500000054 +:02159600000053 +:02159700000052 +:02159800000051 +:02159900000050 +:02159A0000004F +:02159B0000004E +:02159C0000004D +:02159D0000004C +:02159E0000004B +:02159F0000004A +:0215A000000049 +:0215A100000048 +:0215A200000047 +:0215A300000046 +:0215A400000045 +:0215A500000044 +:0215A600000043 +:0215A700000042 +:0215A800000041 +:0215A900000040 +:0215AA0000003F +:0215AB0000003E +:0215AC0000003D +:0215AD0000003C +:0215AE0000003B +:0215AF0000003A +:0215B000000039 +:0215B100000038 +:0215B200000037 +:0215B300000036 +:0215B400000035 +:0215B500000034 +:0215B600000033 +:0215B700000032 +:0215B800000031 +:0215B900000030 +:0215BA0000002F +:0215BB0000002E +:0215BC0000002D +:0215BD0000002C +:0215BE0000002B +:0215BF0000002A +:0215C000000029 +:0215C100000028 +:0215C200000027 +:0215C300000026 +:0215C400000025 +:0215C500000024 +:0215C600000023 +:0215C700000022 +:0215C800000021 +:0215C900000020 +:0215CA0000001F +:0215CB0000001E +:0215CC0000001D +:0215CD0000001C +:0215CE0000001B +:0215CF0000001A +:0215D000000019 +:0215D100000018 +:0215D200000017 +:0215D300000016 +:0215D400000015 +:0215D500000014 +:0215D600000013 +:0215D700000012 +:0215D800000011 +:0215D900000010 +:0215DA0000000F +:0215DB0000000E +:0215DC0000000D +:0215DD0000000C +:0215DE0000000B +:0215DF0000000A +:0215E000000009 +:0215E100000008 +:0215E200000007 +:0215E300000006 +:0215E400000005 +:0215E500000004 +:0215E600000003 +:0215E700000002 +:0215E800000001 +:0215E900000000 +:0215EA000000FF +:0215EB000000FE +:0215EC000000FD +:0215ED000000FC +:0215EE000000FB +:0215EF000000FA +:0215F0000000F9 +:0215F1000000F8 +:0215F2000000F7 +:0215F3000000F6 +:0215F4000000F5 +:0215F5000000F4 +:0215F6000000F3 +:0215F7000000F2 +:0215F8000000F1 +:0215F9000000F0 +:0215FA000000EF +:0215FB000000EE +:0215FC000000ED +:0215FD000000EC +:0215FE000000EB +:0215FF000000EA +:021600000000E8 +:021601000000E7 +:021602000000E6 +:021603000000E5 +:021604000000E4 +:021605000000E3 +:021606000000E2 +:021607000000E1 +:021608000000E0 +:021609000000DF +:02160A000000DE +:02160B000000DD +:02160C000000DC +:02160D000000DB +:02160E000000DA +:02160F000000D9 +:021610000000D8 +:021611000000D7 +:021612000000D6 +:021613000000D5 +:021614000000D4 +:021615000000D3 +:021616000000D2 +:021617000000D1 +:021618000000D0 +:021619000000CF +:02161A000000CE +:02161B000000CD +:02161C000000CC +:02161D000000CB +:02161E000000CA +:02161F000000C9 +:021620000000C8 +:021621000000C7 +:021622000000C6 +:021623000000C5 +:021624000000C4 +:021625000000C3 +:021626000000C2 +:021627000000C1 +:021628000000C0 +:021629000000BF +:02162A000000BE +:02162B000000BD +:02162C000000BC +:02162D000000BB +:02162E000000BA +:02162F000000B9 +:021630000000B8 +:021631000000B7 +:021632000000B6 +:021633000000B5 +:021634000000B4 +:021635000000B3 +:021636000000B2 +:021637000000B1 +:021638000000B0 +:021639000000AF +:02163A000000AE +:02163B000000AD +:02163C000000AC +:02163D000000AB +:02163E000000AA +:02163F000000A9 +:021640000000A8 +:021641000000A7 +:021642000000A6 +:021643000000A5 +:021644000000A4 +:021645000000A3 +:021646000000A2 +:021647000000A1 +:021648000000A0 +:0216490000009F +:02164A0000009E +:02164B0000009D +:02164C0000009C +:02164D0000009B +:02164E0000009A +:02164F00000099 +:02165000000098 +:02165100000097 +:02165200000096 +:02165300000095 +:02165400000094 +:02165500000093 +:02165600000092 +:02165700000091 +:02165800000090 +:0216590000008F +:02165A0000008E +:02165B0000008D +:02165C0000008C +:02165D0000008B +:02165E0000008A +:02165F00000089 +:02166000000088 +:02166100000087 +:02166200000086 +:02166300000085 +:02166400000084 +:02166500000083 +:02166600000082 +:02166700000081 +:02166800000080 +:0216690000007F +:02166A0000007E +:02166B0000007D +:02166C0000007C +:02166D0000007B +:02166E0000007A +:02166F00000079 +:02167000000078 +:02167100000077 +:02167200000076 +:02167300000075 +:02167400000074 +:02167500000073 +:02167600000072 +:02167700000071 +:02167800000070 +:0216790000006F +:02167A0000006E +:02167B0000006D +:02167C0000006C +:02167D0000006B +:02167E0000006A +:02167F00000069 +:02168000000068 +:02168100000067 +:02168200000066 +:02168300000065 +:02168400000064 +:02168500000063 +:02168600000062 +:02168700000061 +:02168800000060 +:0216890000005F +:02168A0000005E +:02168B0000005D +:02168C0000005C +:02168D0000005B +:02168E0000005A +:02168F00000059 +:02169000000058 +:02169100000057 +:02169200000056 +:02169300000055 +:02169400000054 +:02169500000053 +:02169600000052 +:02169700000051 +:02169800000050 +:0216990000004F +:02169A0000004E +:02169B0000004D +:02169C0000004C +:02169D0000004B +:02169E0000004A +:02169F00000049 +:0216A000000048 +:0216A100000047 +:0216A200000046 +:0216A300000045 +:0216A400000044 +:0216A500000043 +:0216A600000042 +:0216A700000041 +:0216A800000040 +:0216A90000003F +:0216AA0000003E +:0216AB0000003D +:0216AC0000003C +:0216AD0000003B +:0216AE0000003A +:0216AF00000039 +:0216B000000038 +:0216B100000037 +:0216B200000036 +:0216B300000035 +:0216B400000034 +:0216B500000033 +:0216B600000032 +:0216B700000031 +:0216B800000030 +:0216B90000002F +:0216BA0000002E +:0216BB0000002D +:0216BC0000002C +:0216BD0000002B +:0216BE0000002A +:0216BF00000029 +:0216C000000028 +:0216C100000027 +:0216C200000026 +:0216C300000025 +:0216C400000024 +:0216C500000023 +:0216C600000022 +:0216C700000021 +:0216C800000020 +:0216C90000001F +:0216CA0000001E +:0216CB0000001D +:0216CC0000001C +:0216CD0000001B +:0216CE0000001A +:0216CF00000019 +:0216D000000018 +:0216D100000017 +:0216D200000016 +:0216D300000015 +:0216D400000014 +:0216D500000013 +:0216D600000012 +:0216D700000011 +:0216D800000010 +:0216D90000000F +:0216DA0000000E +:0216DB0000000D +:0216DC0000000C +:0216DD0000000B +:0216DE0000000A +:0216DF00000009 +:0216E000000008 +:0216E100000007 +:0216E200000006 +:0216E300000005 +:0216E400000004 +:0216E500000003 +:0216E600000002 +:0216E700000001 +:0216E800000000 +:0216E9000000FF +:0216EA000000FE +:0216EB000000FD +:0216EC000000FC +:0216ED000000FB +:0216EE000000FA +:0216EF000000F9 +:0216F0000000F8 +:0216F1000000F7 +:0216F2000000F6 +:0216F3000000F5 +:0216F4000000F4 +:0216F5000000F3 +:0216F6000000F2 +:0216F7000000F1 +:0216F8000000F0 +:0216F9000000EF +:0216FA000000EE +:0216FB000000ED +:0216FC000000EC +:0216FD000000EB +:0216FE000000EA +:0216FF000000E9 +:021700000000E7 +:021701000000E6 +:021702000000E5 +:021703000000E4 +:021704000000E3 +:021705000000E2 +:021706000000E1 +:021707000000E0 +:021708000000DF +:021709000000DE +:02170A000000DD +:02170B000000DC +:02170C000000DB +:02170D000000DA +:02170E000000D9 +:02170F000000D8 +:021710000000D7 +:021711000000D6 +:021712000000D5 +:021713000000D4 +:021714000000D3 +:021715000000D2 +:021716000000D1 +:021717000000D0 +:021718000000CF +:021719000000CE +:02171A000000CD +:02171B000000CC +:02171C000000CB +:02171D000000CA +:02171E000000C9 +:02171F000000C8 +:021720000000C7 +:021721000000C6 +:021722000000C5 +:021723000000C4 +:021724000000C3 +:021725000000C2 +:021726000000C1 +:021727000000C0 +:021728000000BF +:021729000000BE +:02172A000000BD +:02172B000000BC +:02172C000000BB +:02172D000000BA +:02172E000000B9 +:02172F000000B8 +:021730000000B7 +:021731000000B6 +:021732000000B5 +:021733000000B4 +:021734000000B3 +:021735000000B2 +:021736000000B1 +:021737000000B0 +:021738000000AF +:021739000000AE +:02173A000000AD +:02173B000000AC +:02173C000000AB +:02173D000000AA +:02173E000000A9 +:02173F000000A8 +:021740000000A7 +:021741000000A6 +:021742000000A5 +:021743000000A4 +:021744000000A3 +:021745000000A2 +:021746000000A1 +:021747000000A0 +:0217480000009F +:0217490000009E +:02174A0000009D +:02174B0000009C +:02174C0000009B +:02174D0000009A +:02174E00000099 +:02174F00000098 +:02175000000097 +:02175100000096 +:02175200000095 +:02175300000094 +:02175400000093 +:02175500000092 +:02175600000091 +:02175700000090 +:0217580000008F +:0217590000008E +:02175A0000008D +:02175B0000008C +:02175C0000008B +:02175D0000008A +:02175E00000089 +:02175F00000088 +:02176000000087 +:02176100000086 +:02176200000085 +:02176300000084 +:02176400000083 +:02176500000082 +:02176600000081 +:02176700000080 +:0217680000007F +:0217690000007E +:02176A0000007D +:02176B0000007C +:02176C0000007B +:02176D0000007A +:02176E00000079 +:02176F00000078 +:02177000000077 +:02177100000076 +:02177200000075 +:02177300000074 +:02177400000073 +:02177500000072 +:02177600000071 +:02177700000070 +:0217780000006F +:0217790000006E +:02177A0000006D +:02177B0000006C +:02177C0000006B +:02177D0000006A +:02177E00000069 +:02177F00000068 +:02178000000067 +:02178100000066 +:02178200000065 +:02178300000064 +:02178400000063 +:02178500000062 +:02178600000061 +:02178700000060 +:0217880000005F +:0217890000005E +:02178A0000005D +:02178B0000005C +:02178C0000005B +:02178D0000005A +:02178E00000059 +:02178F00000058 +:02179000000057 +:02179100000056 +:02179200000055 +:02179300000054 +:02179400000053 +:02179500000052 +:02179600000051 +:02179700000050 +:0217980000004F +:0217990000004E +:02179A0000004D +:02179B0000004C +:02179C0000004B +:02179D0000004A +:02179E00000049 +:02179F00000048 +:0217A000000047 +:0217A100000046 +:0217A200000045 +:0217A300000044 +:0217A400000043 +:0217A500000042 +:0217A600000041 +:0217A700000040 +:0217A80000003F +:0217A90000003E +:0217AA0000003D +:0217AB0000003C +:0217AC0000003B +:0217AD0000003A +:0217AE00000039 +:0217AF00000038 +:0217B000000037 +:0217B100000036 +:0217B200000035 +:0217B300000034 +:0217B400000033 +:0217B500000032 +:0217B600000031 +:0217B700000030 +:0217B80000002F +:0217B90000002E +:0217BA0000002D +:0217BB0000002C +:0217BC0000002B +:0217BD0000002A +:0217BE00000029 +:0217BF00000028 +:0217C000000027 +:0217C100000026 +:0217C200000025 +:0217C300000024 +:0217C400000023 +:0217C500000022 +:0217C600000021 +:0217C700000020 +:0217C80000001F +:0217C90000001E +:0217CA0000001D +:0217CB0000001C +:0217CC0000001B +:0217CD0000001A +:0217CE00000019 +:0217CF00000018 +:0217D000000017 +:0217D100000016 +:0217D200000015 +:0217D300000014 +:0217D400000013 +:0217D500000012 +:0217D600000011 +:0217D700000010 +:0217D80000000F +:0217D90000000E +:0217DA0000000D +:0217DB0000000C +:0217DC0000000B +:0217DD0000000A +:0217DE00000009 +:0217DF00000008 +:0217E000000007 +:0217E100000006 +:0217E200000005 +:0217E300000004 +:0217E400000003 +:0217E500000002 +:0217E600000001 +:0217E700000000 +:0217E8000000FF +:0217E9000000FE +:0217EA000000FD +:0217EB000000FC +:0217EC000000FB +:0217ED000000FA +:0217EE000000F9 +:0217EF000000F8 +:0217F0000000F7 +:0217F1000000F6 +:0217F2000000F5 +:0217F3000000F4 +:0217F4000000F3 +:0217F5000000F2 +:0217F6000000F1 +:0217F7000000F0 +:0217F8000000EF +:0217F9000000EE +:0217FA000000ED +:0217FB000000EC +:0217FC000000EB +:0217FD000000EA +:0217FE000000E9 +:0217FF000000E8 +:021800000000E6 +:021801000000E5 +:021802000000E4 +:021803000000E3 +:021804000000E2 +:021805000000E1 +:021806000000E0 +:021807000000DF +:021808000000DE +:021809000000DD +:02180A000000DC +:02180B000000DB +:02180C000000DA +:02180D000000D9 +:02180E000000D8 +:02180F000000D7 +:021810000000D6 +:021811000000D5 +:021812000000D4 +:021813000000D3 +:021814000000D2 +:021815000000D1 +:021816000000D0 +:021817000000CF +:021818000000CE +:021819000000CD +:02181A000000CC +:02181B000000CB +:02181C000000CA +:02181D000000C9 +:02181E000000C8 +:02181F000000C7 +:021820000000C6 +:021821000000C5 +:021822000000C4 +:021823000000C3 +:021824000000C2 +:021825000000C1 +:021826000000C0 +:021827000000BF +:021828000000BE +:021829000000BD +:02182A000000BC +:02182B000000BB +:02182C000000BA +:02182D000000B9 +:02182E000000B8 +:02182F000000B7 +:021830000000B6 +:021831000000B5 +:021832000000B4 +:021833000000B3 +:021834000000B2 +:021835000000B1 +:021836000000B0 +:021837000000AF +:021838000000AE +:021839000000AD +:02183A000000AC +:02183B000000AB +:02183C000000AA +:02183D000000A9 +:02183E000000A8 +:02183F000000A7 +:021840000000A6 +:021841000000A5 +:021842000000A4 +:021843000000A3 +:021844000000A2 +:021845000000A1 +:021846000000A0 +:0218470000009F +:0218480000009E +:0218490000009D +:02184A0000009C +:02184B0000009B +:02184C0000009A +:02184D00000099 +:02184E00000098 +:02184F00000097 +:02185000000096 +:02185100000095 +:02185200000094 +:02185300000093 +:02185400000092 +:02185500000091 +:02185600000090 +:0218570000008F +:0218580000008E +:0218590000008D +:02185A0000008C +:02185B0000008B +:02185C0000008A +:02185D00000089 +:02185E00000088 +:02185F00000087 +:02186000000086 +:02186100000085 +:02186200000084 +:02186300000083 +:02186400000082 +:02186500000081 +:02186600000080 +:0218670000007F +:0218680000007E +:0218690000007D +:02186A0000007C +:02186B0000007B +:02186C0000007A +:02186D00000079 +:02186E00000078 +:02186F00000077 +:02187000000076 +:02187100000075 +:02187200000074 +:02187300000073 +:02187400000072 +:02187500000071 +:02187600000070 +:0218770000006F +:0218780000006E +:0218790000006D +:02187A0000006C +:02187B0000006B +:02187C0000006A +:02187D00000069 +:02187E00000068 +:02187F00000067 +:02188000000066 +:02188100000065 +:02188200000064 +:02188300000063 +:02188400000062 +:02188500000061 +:02188600000060 +:0218870000005F +:0218880000005E +:0218890000005D +:02188A0000005C +:02188B0000005B +:02188C0000005A +:02188D00000059 +:02188E00000058 +:02188F00000057 +:02189000000056 +:02189100000055 +:02189200000054 +:02189300000053 +:02189400000052 +:02189500000051 +:02189600000050 +:0218970000004F +:0218980000004E +:0218990000004D +:02189A0000004C +:02189B0000004B +:02189C0000004A +:02189D00000049 +:02189E00000048 +:02189F00000047 +:0218A000000046 +:0218A100000045 +:0218A200000044 +:0218A300000043 +:0218A400000042 +:0218A500000041 +:0218A600000040 +:0218A70000003F +:0218A80000003E +:0218A90000003D +:0218AA0000003C +:0218AB0000003B +:0218AC0000003A +:0218AD00000039 +:0218AE00000038 +:0218AF00000037 +:0218B000000036 +:0218B100000035 +:0218B200000034 +:0218B300000033 +:0218B400000032 +:0218B500000031 +:0218B600000030 +:0218B70000002F +:0218B80000002E +:0218B90000002D +:0218BA0000002C +:0218BB0000002B +:0218BC0000002A +:0218BD00000029 +:0218BE00000028 +:0218BF00000027 +:0218C000000026 +:0218C100000025 +:0218C200000024 +:0218C300000023 +:0218C400000022 +:0218C500000021 +:0218C600000020 +:0218C70000001F +:0218C80000001E +:0218C90000001D +:0218CA0000001C +:0218CB0000001B +:0218CC0000001A +:0218CD00000019 +:0218CE00000018 +:0218CF00000017 +:0218D000000016 +:0218D100000015 +:0218D200000014 +:0218D300000013 +:0218D400000012 +:0218D500000011 +:0218D600000010 +:0218D70000000F +:0218D80000000E +:0218D90000000D +:0218DA0000000C +:0218DB0000000B +:0218DC0000000A +:0218DD00000009 +:0218DE00000008 +:0218DF00000007 +:0218E000000006 +:0218E100000005 +:0218E200000004 +:0218E300000003 +:0218E400000002 +:0218E500000001 +:0218E600000000 +:0218E7000000FF +:0218E8000000FE +:0218E9000000FD +:0218EA000000FC +:0218EB000000FB +:0218EC000000FA +:0218ED000000F9 +:0218EE000000F8 +:0218EF000000F7 +:0218F0000000F6 +:0218F1000000F5 +:0218F2000000F4 +:0218F3000000F3 +:0218F4000000F2 +:0218F5000000F1 +:0218F6000000F0 +:0218F7000000EF +:0218F8000000EE +:0218F9000000ED +:0218FA000000EC +:0218FB000000EB +:0218FC000000EA +:0218FD000000E9 +:0218FE000000E8 +:0218FF000000E7 +:021900000000E5 +:021901000000E4 +:021902000000E3 +:021903000000E2 +:021904000000E1 +:021905000000E0 +:021906000000DF +:021907000000DE +:021908000000DD +:021909000000DC +:02190A000000DB +:02190B000000DA +:02190C000000D9 +:02190D000000D8 +:02190E000000D7 +:02190F000000D6 +:021910000000D5 +:021911000000D4 +:021912000000D3 +:021913000000D2 +:021914000000D1 +:021915000000D0 +:021916000000CF +:021917000000CE +:021918000000CD +:021919000000CC +:02191A000000CB +:02191B000000CA +:02191C000000C9 +:02191D000000C8 +:02191E000000C7 +:02191F000000C6 +:021920000000C5 +:021921000000C4 +:021922000000C3 +:021923000000C2 +:021924000000C1 +:021925000000C0 +:021926000000BF +:021927000000BE +:021928000000BD +:021929000000BC +:02192A000000BB +:02192B000000BA +:02192C000000B9 +:02192D000000B8 +:02192E000000B7 +:02192F000000B6 +:021930000000B5 +:021931000000B4 +:021932000000B3 +:021933000000B2 +:021934000000B1 +:021935000000B0 +:021936000000AF +:021937000000AE +:021938000000AD +:021939000000AC +:02193A000000AB +:02193B000000AA +:02193C000000A9 +:02193D000000A8 +:02193E000000A7 +:02193F000000A6 +:021940000000A5 +:021941000000A4 +:021942000000A3 +:021943000000A2 +:021944000000A1 +:021945000000A0 +:0219460000009F +:0219470000009E +:0219480000009D +:0219490000009C +:02194A0000009B +:02194B0000009A +:02194C00000099 +:02194D00000098 +:02194E00000097 +:02194F00000096 +:02195000000095 +:02195100000094 +:02195200000093 +:02195300000092 +:02195400000091 +:02195500000090 +:0219560000008F +:0219570000008E +:0219580000008D +:0219590000008C +:02195A0000008B +:02195B0000008A +:02195C00000089 +:02195D00000088 +:02195E00000087 +:02195F00000086 +:02196000000085 +:02196100000084 +:02196200000083 +:02196300000082 +:02196400000081 +:02196500000080 +:0219660000007F +:0219670000007E +:0219680000007D +:0219690000007C +:02196A0000007B +:02196B0000007A +:02196C00000079 +:02196D00000078 +:02196E00000077 +:02196F00000076 +:02197000000075 +:02197100000074 +:02197200000073 +:02197300000072 +:02197400000071 +:02197500000070 +:0219760000006F +:0219770000006E +:0219780000006D +:0219790000006C +:02197A0000006B +:02197B0000006A +:02197C00000069 +:02197D00000068 +:02197E00000067 +:02197F00000066 +:02198000000065 +:02198100000064 +:02198200000063 +:02198300000062 +:02198400000061 +:02198500000060 +:0219860000005F +:0219870000005E +:0219880000005D +:0219890000005C +:02198A0000005B +:02198B0000005A +:02198C00000059 +:02198D00000058 +:02198E00000057 +:02198F00000056 +:02199000000055 +:02199100000054 +:02199200000053 +:02199300000052 +:02199400000051 +:02199500000050 +:0219960000004F +:0219970000004E +:0219980000004D +:0219990000004C +:02199A0000004B +:02199B0000004A +:02199C00000049 +:02199D00000048 +:02199E00000047 +:02199F00000046 +:0219A000000045 +:0219A100000044 +:0219A200000043 +:0219A300000042 +:0219A400000041 +:0219A500000040 +:0219A60000003F +:0219A70000003E +:0219A80000003D +:0219A90000003C +:0219AA0000003B +:0219AB0000003A +:0219AC00000039 +:0219AD00000038 +:0219AE00000037 +:0219AF00000036 +:0219B000000035 +:0219B100000034 +:0219B200000033 +:0219B300000032 +:0219B400000031 +:0219B500000030 +:0219B60000002F +:0219B70000002E +:0219B80000002D +:0219B90000002C +:0219BA0000002B +:0219BB0000002A +:0219BC00000029 +:0219BD00000028 +:0219BE00000027 +:0219BF00000026 +:0219C000000025 +:0219C100000024 +:0219C200000023 +:0219C300000022 +:0219C400000021 +:0219C500000020 +:0219C60000001F +:0219C70000001E +:0219C80000001D +:0219C90000001C +:0219CA0000001B +:0219CB0000001A +:0219CC00000019 +:0219CD00000018 +:0219CE00000017 +:0219CF00000016 +:0219D000000015 +:0219D100000014 +:0219D200000013 +:0219D300000012 +:0219D400000011 +:0219D500000010 +:0219D60000000F +:0219D70000000E +:0219D80000000D +:0219D90000000C +:0219DA0000000B +:0219DB0000000A +:0219DC00000009 +:0219DD00000008 +:0219DE00000007 +:0219DF00000006 +:0219E000000005 +:0219E100000004 +:0219E200000003 +:0219E300000002 +:0219E400000001 +:0219E500000000 +:0219E6000000FF +:0219E7000000FE +:0219E8000000FD +:0219E9000000FC +:0219EA000000FB +:0219EB000000FA +:0219EC000000F9 +:0219ED000000F8 +:0219EE000000F7 +:0219EF000000F6 +:0219F0000000F5 +:0219F1000000F4 +:0219F2000000F3 +:0219F3000000F2 +:0219F4000000F1 +:0219F5000000F0 +:0219F6000000EF +:0219F7000000EE +:0219F8000000ED +:0219F9000000EC +:0219FA000000EB +:0219FB000000EA +:0219FC000000E9 +:0219FD000000E8 +:0219FE000000E7 +:0219FF000000E6 +:021A00000000E4 +:021A01000000E3 +:021A02000000E2 +:021A03000000E1 +:021A04000000E0 +:021A05000000DF +:021A06000000DE +:021A07000000DD +:021A08000000DC +:021A09000000DB +:021A0A000000DA +:021A0B000000D9 +:021A0C000000D8 +:021A0D000000D7 +:021A0E000000D6 +:021A0F000000D5 +:021A10000000D4 +:021A11000000D3 +:021A12000000D2 +:021A13000000D1 +:021A14000000D0 +:021A15000000CF +:021A16000000CE +:021A17000000CD +:021A18000000CC +:021A19000000CB +:021A1A000000CA +:021A1B000000C9 +:021A1C000000C8 +:021A1D000000C7 +:021A1E000000C6 +:021A1F000000C5 +:021A20000000C4 +:021A21000000C3 +:021A22000000C2 +:021A23000000C1 +:021A24000000C0 +:021A25000000BF +:021A26000000BE +:021A27000000BD +:021A28000000BC +:021A29000000BB +:021A2A000000BA +:021A2B000000B9 +:021A2C000000B8 +:021A2D000000B7 +:021A2E000000B6 +:021A2F000000B5 +:021A30000000B4 +:021A31000000B3 +:021A32000000B2 +:021A33000000B1 +:021A34000000B0 +:021A35000000AF +:021A36000000AE +:021A37000000AD +:021A38000000AC +:021A39000000AB +:021A3A000000AA +:021A3B000000A9 +:021A3C000000A8 +:021A3D000000A7 +:021A3E000000A6 +:021A3F000000A5 +:021A40000000A4 +:021A41000000A3 +:021A42000000A2 +:021A43000000A1 +:021A44000000A0 +:021A450000009F +:021A460000009E +:021A470000009D +:021A480000009C +:021A490000009B +:021A4A0000009A +:021A4B00000099 +:021A4C00000098 +:021A4D00000097 +:021A4E00000096 +:021A4F00000095 +:021A5000000094 +:021A5100000093 +:021A5200000092 +:021A5300000091 +:021A5400000090 +:021A550000008F +:021A560000008E +:021A570000008D +:021A580000008C +:021A590000008B +:021A5A0000008A +:021A5B00000089 +:021A5C00000088 +:021A5D00000087 +:021A5E00000086 +:021A5F00000085 +:021A6000000084 +:021A6100000083 +:021A6200000082 +:021A6300000081 +:021A6400000080 +:021A650000007F +:021A660000007E +:021A670000007D +:021A680000007C +:021A690000007B +:021A6A0000007A +:021A6B00000079 +:021A6C00000078 +:021A6D00000077 +:021A6E00000076 +:021A6F00000075 +:021A7000000074 +:021A7100000073 +:021A7200000072 +:021A7300000071 +:021A7400000070 +:021A750000006F +:021A760000006E +:021A770000006D +:021A780000006C +:021A790000006B +:021A7A0000006A +:021A7B00000069 +:021A7C00000068 +:021A7D00000067 +:021A7E00000066 +:021A7F00000065 +:021A8000000064 +:021A8100000063 +:021A8200000062 +:021A8300000061 +:021A8400000060 +:021A850000005F +:021A860000005E +:021A870000005D +:021A880000005C +:021A890000005B +:021A8A0000005A +:021A8B00000059 +:021A8C00000058 +:021A8D00000057 +:021A8E00000056 +:021A8F00000055 +:021A9000000054 +:021A9100000053 +:021A9200000052 +:021A9300000051 +:021A9400000050 +:021A950000004F +:021A960000004E +:021A970000004D +:021A980000004C +:021A990000004B +:021A9A0000004A +:021A9B00000049 +:021A9C00000048 +:021A9D00000047 +:021A9E00000046 +:021A9F00000045 +:021AA000000044 +:021AA100000043 +:021AA200000042 +:021AA300000041 +:021AA400000040 +:021AA50000003F +:021AA60000003E +:021AA70000003D +:021AA80000003C +:021AA90000003B +:021AAA0000003A +:021AAB00000039 +:021AAC00000038 +:021AAD00000037 +:021AAE00000036 +:021AAF00000035 +:021AB000000034 +:021AB100000033 +:021AB200000032 +:021AB300000031 +:021AB400000030 +:021AB50000002F +:021AB60000002E +:021AB70000002D +:021AB80000002C +:021AB90000002B +:021ABA0000002A +:021ABB00000029 +:021ABC00000028 +:021ABD00000027 +:021ABE00000026 +:021ABF00000025 +:021AC000000024 +:021AC100000023 +:021AC200000022 +:021AC300000021 +:021AC400000020 +:021AC50000001F +:021AC60000001E +:021AC70000001D +:021AC80000001C +:021AC90000001B +:021ACA0000001A +:021ACB00000019 +:021ACC00000018 +:021ACD00000017 +:021ACE00000016 +:021ACF00000015 +:021AD000000014 +:021AD100000013 +:021AD200000012 +:021AD300000011 +:021AD400000010 +:021AD50000000F +:021AD60000000E +:021AD70000000D +:021AD80000000C +:021AD90000000B +:021ADA0000000A +:021ADB00000009 +:021ADC00000008 +:021ADD00000007 +:021ADE00000006 +:021ADF00000005 +:021AE000000004 +:021AE100000003 +:021AE200000002 +:021AE300000001 +:021AE400000000 +:021AE5000000FF +:021AE6000000FE +:021AE7000000FD +:021AE8000000FC +:021AE9000000FB +:021AEA000000FA +:021AEB000000F9 +:021AEC000000F8 +:021AED000000F7 +:021AEE000000F6 +:021AEF000000F5 +:021AF0000000F4 +:021AF1000000F3 +:021AF2000000F2 +:021AF3000000F1 +:021AF4000000F0 +:021AF5000000EF +:021AF6000000EE +:021AF7000000ED +:021AF8000000EC +:021AF9000000EB +:021AFA000000EA +:021AFB000000E9 +:021AFC000000E8 +:021AFD000000E7 +:021AFE000000E6 +:021AFF000000E5 +:021B00000000E3 +:021B01000000E2 +:021B02000000E1 +:021B03000000E0 +:021B04000000DF +:021B05000000DE +:021B06000000DD +:021B07000000DC +:021B08000000DB +:021B09000000DA +:021B0A000000D9 +:021B0B000000D8 +:021B0C000000D7 +:021B0D000000D6 +:021B0E000000D5 +:021B0F000000D4 +:021B10000000D3 +:021B11000000D2 +:021B12000000D1 +:021B13000000D0 +:021B14000000CF +:021B15000000CE +:021B16000000CD +:021B17000000CC +:021B18000000CB +:021B19000000CA +:021B1A000000C9 +:021B1B000000C8 +:021B1C000000C7 +:021B1D000000C6 +:021B1E000000C5 +:021B1F000000C4 +:021B20000000C3 +:021B21000000C2 +:021B22000000C1 +:021B23000000C0 +:021B24000000BF +:021B25000000BE +:021B26000000BD +:021B27000000BC +:021B28000000BB +:021B29000000BA +:021B2A000000B9 +:021B2B000000B8 +:021B2C000000B7 +:021B2D000000B6 +:021B2E000000B5 +:021B2F000000B4 +:021B30000000B3 +:021B31000000B2 +:021B32000000B1 +:021B33000000B0 +:021B34000000AF +:021B35000000AE +:021B36000000AD +:021B37000000AC +:021B38000000AB +:021B39000000AA +:021B3A000000A9 +:021B3B000000A8 +:021B3C000000A7 +:021B3D000000A6 +:021B3E000000A5 +:021B3F000000A4 +:021B40000000A3 +:021B41000000A2 +:021B42000000A1 +:021B43000000A0 +:021B440000009F +:021B450000009E +:021B460000009D +:021B470000009C +:021B480000009B +:021B490000009A +:021B4A00000099 +:021B4B00000098 +:021B4C00000097 +:021B4D00000096 +:021B4E00000095 +:021B4F00000094 +:021B5000000093 +:021B5100000092 +:021B5200000091 +:021B5300000090 +:021B540000008F +:021B550000008E +:021B560000008D +:021B570000008C +:021B580000008B +:021B590000008A +:021B5A00000089 +:021B5B00000088 +:021B5C00000087 +:021B5D00000086 +:021B5E00000085 +:021B5F00000084 +:021B6000000083 +:021B6100000082 +:021B6200000081 +:021B6300000080 +:021B640000007F +:021B650000007E +:021B660000007D +:021B670000007C +:021B680000007B +:021B690000007A +:021B6A00000079 +:021B6B00000078 +:021B6C00000077 +:021B6D00000076 +:021B6E00000075 +:021B6F00000074 +:021B7000000073 +:021B7100000072 +:021B7200000071 +:021B7300000070 +:021B740000006F +:021B750000006E +:021B760000006D +:021B770000006C +:021B780000006B +:021B790000006A +:021B7A00000069 +:021B7B00000068 +:021B7C00000067 +:021B7D00000066 +:021B7E00000065 +:021B7F00000064 +:021B8000000063 +:021B8100000062 +:021B8200000061 +:021B8300000060 +:021B840000005F +:021B850000005E +:021B860000005D +:021B870000005C +:021B880000005B +:021B890000005A +:021B8A00000059 +:021B8B00000058 +:021B8C00000057 +:021B8D00000056 +:021B8E00000055 +:021B8F00000054 +:021B9000000053 +:021B9100000052 +:021B9200000051 +:021B9300000050 +:021B940000004F +:021B950000004E +:021B960000004D +:021B970000004C +:021B980000004B +:021B990000004A +:021B9A00000049 +:021B9B00000048 +:021B9C00000047 +:021B9D00000046 +:021B9E00000045 +:021B9F00000044 +:021BA000000043 +:021BA100000042 +:021BA200000041 +:021BA300000040 +:021BA40000003F +:021BA50000003E +:021BA60000003D +:021BA70000003C +:021BA80000003B +:021BA90000003A +:021BAA00000039 +:021BAB00000038 +:021BAC00000037 +:021BAD00000036 +:021BAE00000035 +:021BAF00000034 +:021BB000000033 +:021BB100000032 +:021BB200000031 +:021BB300000030 +:021BB40000002F +:021BB50000002E +:021BB60000002D +:021BB70000002C +:021BB80000002B +:021BB90000002A +:021BBA00000029 +:021BBB00000028 +:021BBC00000027 +:021BBD00000026 +:021BBE00000025 +:021BBF00000024 +:021BC000000023 +:021BC100000022 +:021BC200000021 +:021BC300000020 +:021BC40000001F +:021BC50000001E +:021BC60000001D +:021BC70000001C +:021BC80000001B +:021BC90000001A +:021BCA00000019 +:021BCB00000018 +:021BCC00000017 +:021BCD00000016 +:021BCE00000015 +:021BCF00000014 +:021BD000000013 +:021BD100000012 +:021BD200000011 +:021BD300000010 +:021BD40000000F +:021BD50000000E +:021BD60000000D +:021BD70000000C +:021BD80000000B +:021BD90000000A +:021BDA00000009 +:021BDB00000008 +:021BDC00000007 +:021BDD00000006 +:021BDE00000005 +:021BDF00000004 +:021BE000000003 +:021BE100000002 +:021BE200000001 +:021BE300000000 +:021BE4000000FF +:021BE5000000FE +:021BE6000000FD +:021BE7000000FC +:021BE8000000FB +:021BE9000000FA +:021BEA000000F9 +:021BEB000000F8 +:021BEC000000F7 +:021BED000000F6 +:021BEE000000F5 +:021BEF000000F4 +:021BF0000000F3 +:021BF1000000F2 +:021BF2000000F1 +:021BF3000000F0 +:021BF4000000EF +:021BF5000000EE +:021BF6000000ED +:021BF7000000EC +:021BF8000000EB +:021BF9000000EA +:021BFA000000E9 +:021BFB000000E8 +:021BFC000000E7 +:021BFD000000E6 +:021BFE000000E5 +:021BFF000000E4 +:021C00000000E2 +:021C01000000E1 +:021C02000000E0 +:021C03000000DF +:021C04000000DE +:021C05000000DD +:021C06000000DC +:021C07000000DB +:021C08000000DA +:021C09000000D9 +:021C0A000000D8 +:021C0B000000D7 +:021C0C000000D6 +:021C0D000000D5 +:021C0E000000D4 +:021C0F000000D3 +:021C10000000D2 +:021C11000000D1 +:021C12000000D0 +:021C13000000CF +:021C14000000CE +:021C15000000CD +:021C16000000CC +:021C17000000CB +:021C18000000CA +:021C19000000C9 +:021C1A000000C8 +:021C1B000000C7 +:021C1C000000C6 +:021C1D000000C5 +:021C1E000000C4 +:021C1F000000C3 +:021C20000000C2 +:021C21000000C1 +:021C22000000C0 +:021C23000000BF +:021C24000000BE +:021C25000000BD +:021C26000000BC +:021C27000000BB +:021C28000000BA +:021C29000000B9 +:021C2A000000B8 +:021C2B000000B7 +:021C2C000000B6 +:021C2D000000B5 +:021C2E000000B4 +:021C2F000000B3 +:021C30000000B2 +:021C31000000B1 +:021C32000000B0 +:021C33000000AF +:021C34000000AE +:021C35000000AD +:021C36000000AC +:021C37000000AB +:021C38000000AA +:021C39000000A9 +:021C3A000000A8 +:021C3B000000A7 +:021C3C000000A6 +:021C3D000000A5 +:021C3E000000A4 +:021C3F000000A3 +:021C40000000A2 +:021C41000000A1 +:021C42000000A0 +:021C430000009F +:021C440000009E +:021C450000009D +:021C460000009C +:021C470000009B +:021C480000009A +:021C4900000099 +:021C4A00000098 +:021C4B00000097 +:021C4C00000096 +:021C4D00000095 +:021C4E00000094 +:021C4F00000093 +:021C5000000092 +:021C5100000091 +:021C5200000090 +:021C530000008F +:021C540000008E +:021C550000008D +:021C560000008C +:021C570000008B +:021C580000008A +:021C5900000089 +:021C5A00000088 +:021C5B00000087 +:021C5C00000086 +:021C5D00000085 +:021C5E00000084 +:021C5F00000083 +:021C6000000082 +:021C6100000081 +:021C6200000080 +:021C630000007F +:021C640000007E +:021C650000007D +:021C660000007C +:021C670000007B +:021C680000007A +:021C6900000079 +:021C6A00000078 +:021C6B00000077 +:021C6C00000076 +:021C6D00000075 +:021C6E00000074 +:021C6F00000073 +:021C7000000072 +:021C7100000071 +:021C7200000070 +:021C730000006F +:021C740000006E +:021C750000006D +:021C760000006C +:021C770000006B +:021C780000006A +:021C7900000069 +:021C7A00000068 +:021C7B00000067 +:021C7C00000066 +:021C7D00000065 +:021C7E00000064 +:021C7F00000063 +:021C8000000062 +:021C8100000061 +:021C8200000060 +:021C830000005F +:021C840000005E +:021C850000005D +:021C860000005C +:021C870000005B +:021C880000005A +:021C8900000059 +:021C8A00000058 +:021C8B00000057 +:021C8C00000056 +:021C8D00000055 +:021C8E00000054 +:021C8F00000053 +:021C9000000052 +:021C9100000051 +:021C9200000050 +:021C930000004F +:021C940000004E +:021C950000004D +:021C960000004C +:021C970000004B +:021C980000004A +:021C9900000049 +:021C9A00000048 +:021C9B00000047 +:021C9C00000046 +:021C9D00000045 +:021C9E00000044 +:021C9F00000043 +:021CA000000042 +:021CA100000041 +:021CA200000040 +:021CA30000003F +:021CA40000003E +:021CA50000003D +:021CA60000003C +:021CA70000003B +:021CA80000003A +:021CA900000039 +:021CAA00000038 +:021CAB00000037 +:021CAC00000036 +:021CAD00000035 +:021CAE00000034 +:021CAF00000033 +:021CB000000032 +:021CB100000031 +:021CB200000030 +:021CB30000002F +:021CB40000002E +:021CB50000002D +:021CB60000002C +:021CB70000002B +:021CB80000002A +:021CB900000029 +:021CBA00000028 +:021CBB00000027 +:021CBC00000026 +:021CBD00000025 +:021CBE00000024 +:021CBF00000023 +:021CC000000022 +:021CC100000021 +:021CC200000020 +:021CC30000001F +:021CC40000001E +:021CC50000001D +:021CC60000001C +:021CC70000001B +:021CC80000001A +:021CC900000019 +:021CCA00000018 +:021CCB00000017 +:021CCC00000016 +:021CCD00000015 +:021CCE00000014 +:021CCF00000013 +:021CD000000012 +:021CD100000011 +:021CD200000010 +:021CD30000000F +:021CD40000000E +:021CD50000000D +:021CD60000000C +:021CD70000000B +:021CD80000000A +:021CD900000009 +:021CDA00000008 +:021CDB00000007 +:021CDC00000006 +:021CDD00000005 +:021CDE00000004 +:021CDF00000003 +:021CE000000002 +:021CE100000001 +:021CE200000000 +:021CE3000000FF +:021CE4000000FE +:021CE5000000FD +:021CE6000000FC +:021CE7000000FB +:021CE8000000FA +:021CE9000000F9 +:021CEA000000F8 +:021CEB000000F7 +:021CEC000000F6 +:021CED000000F5 +:021CEE000000F4 +:021CEF000000F3 +:021CF0000000F2 +:021CF1000000F1 +:021CF2000000F0 +:021CF3000000EF +:021CF4000000EE +:021CF5000000ED +:021CF6000000EC +:021CF7000000EB +:021CF8000000EA +:021CF9000000E9 +:021CFA000000E8 +:021CFB000000E7 +:021CFC000000E6 +:021CFD000000E5 +:021CFE000000E4 +:021CFF000000E3 +:021D00000000E1 +:021D01000000E0 +:021D02000000DF +:021D03000000DE +:021D04000000DD +:021D05000000DC +:021D06000000DB +:021D07000000DA +:021D08000000D9 +:021D09000000D8 +:021D0A000000D7 +:021D0B000000D6 +:021D0C000000D5 +:021D0D000000D4 +:021D0E000000D3 +:021D0F000000D2 +:021D10000000D1 +:021D11000000D0 +:021D12000000CF +:021D13000000CE +:021D14000000CD +:021D15000000CC +:021D16000000CB +:021D17000000CA +:021D18000000C9 +:021D19000000C8 +:021D1A000000C7 +:021D1B000000C6 +:021D1C000000C5 +:021D1D000000C4 +:021D1E000000C3 +:021D1F000000C2 +:021D20000000C1 +:021D21000000C0 +:021D22000000BF +:021D23000000BE +:021D24000000BD +:021D25000000BC +:021D26000000BB +:021D27000000BA +:021D28000000B9 +:021D29000000B8 +:021D2A000000B7 +:021D2B000000B6 +:021D2C000000B5 +:021D2D000000B4 +:021D2E000000B3 +:021D2F000000B2 +:021D30000000B1 +:021D31000000B0 +:021D32000000AF +:021D33000000AE +:021D34000000AD +:021D35000000AC +:021D36000000AB +:021D37000000AA +:021D38000000A9 +:021D39000000A8 +:021D3A000000A7 +:021D3B000000A6 +:021D3C000000A5 +:021D3D000000A4 +:021D3E000000A3 +:021D3F000000A2 +:021D40000000A1 +:021D41000000A0 +:021D420000009F +:021D430000009E +:021D440000009D +:021D450000009C +:021D460000009B +:021D470000009A +:021D4800000099 +:021D4900000098 +:021D4A00000097 +:021D4B00000096 +:021D4C00000095 +:021D4D00000094 +:021D4E00000093 +:021D4F00000092 +:021D5000000091 +:021D5100000090 +:021D520000008F +:021D530000008E +:021D540000008D +:021D550000008C +:021D560000008B +:021D570000008A +:021D5800000089 +:021D5900000088 +:021D5A00000087 +:021D5B00000086 +:021D5C00000085 +:021D5D00000084 +:021D5E00000083 +:021D5F00000082 +:021D6000000081 +:021D6100000080 +:021D620000007F +:021D630000007E +:021D640000007D +:021D650000007C +:021D660000007B +:021D670000007A +:021D6800000079 +:021D6900000078 +:021D6A00000077 +:021D6B00000076 +:021D6C00000075 +:021D6D00000074 +:021D6E00000073 +:021D6F00000072 +:021D7000000071 +:021D7100000070 +:021D720000006F +:021D730000006E +:021D740000006D +:021D750000006C +:021D760000006B +:021D770000006A +:021D7800000069 +:021D7900000068 +:021D7A00000067 +:021D7B00000066 +:021D7C00000065 +:021D7D00000064 +:021D7E00000063 +:021D7F00000062 +:021D8000000061 +:021D8100000060 +:021D820000005F +:021D830000005E +:021D840000005D +:021D850000005C +:021D860000005B +:021D870000005A +:021D8800000059 +:021D8900000058 +:021D8A00000057 +:021D8B00000056 +:021D8C00000055 +:021D8D00000054 +:021D8E00000053 +:021D8F00000052 +:021D9000000051 +:021D9100000050 +:021D920000004F +:021D930000004E +:021D940000004D +:021D950000004C +:021D960000004B +:021D970000004A +:021D9800000049 +:021D9900000048 +:021D9A00000047 +:021D9B00000046 +:021D9C00000045 +:021D9D00000044 +:021D9E00000043 +:021D9F00000042 +:021DA000000041 +:021DA100000040 +:021DA20000003F +:021DA30000003E +:021DA40000003D +:021DA50000003C +:021DA60000003B +:021DA70000003A +:021DA800000039 +:021DA900000038 +:021DAA00000037 +:021DAB00000036 +:021DAC00000035 +:021DAD00000034 +:021DAE00000033 +:021DAF00000032 +:021DB000000031 +:021DB100000030 +:021DB20000002F +:021DB30000002E +:021DB40000002D +:021DB50000002C +:021DB60000002B +:021DB70000002A +:021DB800000029 +:021DB900000028 +:021DBA00000027 +:021DBB00000026 +:021DBC00000025 +:021DBD00000024 +:021DBE00000023 +:021DBF00000022 +:021DC000000021 +:021DC100000020 +:021DC20000001F +:021DC30000001E +:021DC40000001D +:021DC50000001C +:021DC60000001B +:021DC70000001A +:021DC800000019 +:021DC900000018 +:021DCA00000017 +:021DCB00000016 +:021DCC00000015 +:021DCD00000014 +:021DCE00000013 +:021DCF00000012 +:021DD000000011 +:021DD100000010 +:021DD20000000F +:021DD30000000E +:021DD40000000D +:021DD50000000C +:021DD60000000B +:021DD70000000A +:021DD800000009 +:021DD900000008 +:021DDA00000007 +:021DDB00000006 +:021DDC00000005 +:021DDD00000004 +:021DDE00000003 +:021DDF00000002 +:021DE000000001 +:021DE100000000 +:021DE2000000FF +:021DE3000000FE +:021DE4000000FD +:021DE5000000FC +:021DE6000000FB +:021DE7000000FA +:021DE8000000F9 +:021DE9000000F8 +:021DEA000000F7 +:021DEB000000F6 +:021DEC000000F5 +:021DED000000F4 +:021DEE000000F3 +:021DEF000000F2 +:021DF0000000F1 +:021DF1000000F0 +:021DF2000000EF +:021DF3000000EE +:021DF4000000ED +:021DF5000000EC +:021DF6000000EB +:021DF7000000EA +:021DF8000000E9 +:021DF9000000E8 +:021DFA000000E7 +:021DFB000000E6 +:021DFC000000E5 +:021DFD000000E4 +:021DFE000000E3 +:021DFF000000E2 +:021E00000000E0 +:021E01000000DF +:021E02000000DE +:021E03000000DD +:021E04000000DC +:021E05000000DB +:021E06000000DA +:021E07000000D9 +:021E08000000D8 +:021E09000000D7 +:021E0A000000D6 +:021E0B000000D5 +:021E0C000000D4 +:021E0D000000D3 +:021E0E000000D2 +:021E0F000000D1 +:021E10000000D0 +:021E11000000CF +:021E12000000CE +:021E13000000CD +:021E14000000CC +:021E15000000CB +:021E16000000CA +:021E17000000C9 +:021E18000000C8 +:021E19000000C7 +:021E1A000000C6 +:021E1B000000C5 +:021E1C000000C4 +:021E1D000000C3 +:021E1E000000C2 +:021E1F000000C1 +:021E20000000C0 +:021E21000000BF +:021E22000000BE +:021E23000000BD +:021E24000000BC +:021E25000000BB +:021E26000000BA +:021E27000000B9 +:021E28000000B8 +:021E29000000B7 +:021E2A000000B6 +:021E2B000000B5 +:021E2C000000B4 +:021E2D000000B3 +:021E2E000000B2 +:021E2F000000B1 +:021E30000000B0 +:021E31000000AF +:021E32000000AE +:021E33000000AD +:021E34000000AC +:021E35000000AB +:021E36000000AA +:021E37000000A9 +:021E38000000A8 +:021E39000000A7 +:021E3A000000A6 +:021E3B000000A5 +:021E3C000000A4 +:021E3D000000A3 +:021E3E000000A2 +:021E3F000000A1 +:021E40000000A0 +:021E410000009F +:021E420000009E +:021E430000009D +:021E440000009C +:021E450000009B +:021E460000009A +:021E4700000099 +:021E4800000098 +:021E4900000097 +:021E4A00000096 +:021E4B00000095 +:021E4C00000094 +:021E4D00000093 +:021E4E00000092 +:021E4F00000091 +:021E5000000090 +:021E510000008F +:021E520000008E +:021E530000008D +:021E540000008C +:021E550000008B +:021E560000008A +:021E5700000089 +:021E5800000088 +:021E5900000087 +:021E5A00000086 +:021E5B00000085 +:021E5C00000084 +:021E5D00000083 +:021E5E00000082 +:021E5F00000081 +:021E6000000080 +:021E610000007F +:021E620000007E +:021E630000007D +:021E640000007C +:021E650000007B +:021E660000007A +:021E6700000079 +:021E6800000078 +:021E6900000077 +:021E6A00000076 +:021E6B00000075 +:021E6C00000074 +:021E6D00000073 +:021E6E00000072 +:021E6F00000071 +:021E7000000070 +:021E710000006F +:021E720000006E +:021E730000006D +:021E740000006C +:021E750000006B +:021E760000006A +:021E7700000069 +:021E7800000068 +:021E7900000067 +:021E7A00000066 +:021E7B00000065 +:021E7C00000064 +:021E7D00000063 +:021E7E00000062 +:021E7F00000061 +:021E8000000060 +:021E810000005F +:021E820000005E +:021E830000005D +:021E840000005C +:021E850000005B +:021E860000005A +:021E8700000059 +:021E8800000058 +:021E8900000057 +:021E8A00000056 +:021E8B00000055 +:021E8C00000054 +:021E8D00000053 +:021E8E00000052 +:021E8F00000051 +:021E9000000050 +:021E910000004F +:021E920000004E +:021E930000004D +:021E940000004C +:021E950000004B +:021E960000004A +:021E9700000049 +:021E9800000048 +:021E9900000047 +:021E9A00000046 +:021E9B00000045 +:021E9C00000044 +:021E9D00000043 +:021E9E00000042 +:021E9F00000041 +:021EA000000040 +:021EA10000003F +:021EA20000003E +:021EA30000003D +:021EA40000003C +:021EA50000003B +:021EA60000003A +:021EA700000039 +:021EA800000038 +:021EA900000037 +:021EAA00000036 +:021EAB00000035 +:021EAC00000034 +:021EAD00000033 +:021EAE00000032 +:021EAF00000031 +:021EB000000030 +:021EB10000002F +:021EB20000002E +:021EB30000002D +:021EB40000002C +:021EB50000002B +:021EB60000002A +:021EB700000029 +:021EB800000028 +:021EB900000027 +:021EBA00000026 +:021EBB00000025 +:021EBC00000024 +:021EBD00000023 +:021EBE00000022 +:021EBF00000021 +:021EC000000020 +:021EC10000001F +:021EC20000001E +:021EC30000001D +:021EC40000001C +:021EC50000001B +:021EC60000001A +:021EC700000019 +:021EC800000018 +:021EC900000017 +:021ECA00000016 +:021ECB00000015 +:021ECC00000014 +:021ECD00000013 +:021ECE00000012 +:021ECF00000011 +:021ED00000FF11 +:021ED10000FF10 +:021ED20000FF0F +:021ED30000FF0E +:021ED40000FF0D +:021ED50000FF0C +:021ED60000FF0B +:021ED70000FF0A +:021ED800000008 +:021ED900000007 +:021EDA00000006 +:021EDB00000005 +:021EDC00000004 +:021EDD00000003 +:021EDE00000002 +:021EDF00000001 +:021EE000000000 +:021EE1000000FF +:021EE2000000FE +:021EE3000000FD +:021EE4000000FC +:021EE5000000FB +:021EE6000000FA +:021EE7000000F9 +:021EE8000000F8 +:021EE9000000F7 +:021EEA000000F6 +:021EEB000000F5 +:021EEC000000F4 +:021EED000000F3 +:021EEE000000F2 +:021EEF000000F1 +:021EF0000000F0 +:021EF1000000EF +:021EF2000000EE +:021EF3000000ED +:021EF4000000EC +:021EF5000000EB +:021EF6000000EA +:021EF7000000E9 +:021EF8000000E8 +:021EF9000000E7 +:021EFA000000E6 +:021EFB000000E5 +:021EFC000000E4 +:021EFD000000E3 +:021EFE000000E2 +:021EFF000000E1 +:021F00000000DF +:021F01000000DE +:021F02000000DD +:021F03000000DC +:021F04000000DB +:021F05000000DA +:021F06000000D9 +:021F07000000D8 +:021F08000000D7 +:021F09000000D6 +:021F0A000000D5 +:021F0B000000D4 +:021F0C000000D3 +:021F0D000000D2 +:021F0E000000D1 +:021F0F000000D0 +:021F10000000CF +:021F11000000CE +:021F12000000CD +:021F13000000CC +:021F14000000CB +:021F15000000CA +:021F16000000C9 +:021F17000000C8 +:021F18000000C7 +:021F19000000C6 +:021F1A000000C5 +:021F1B000000C4 +:021F1C000000C3 +:021F1D000000C2 +:021F1E000000C1 +:021F1F000000C0 +:021F20000000BF +:021F21000000BE +:021F22000000BD +:021F23000000BC +:021F24000000BB +:021F25000000BA +:021F26000000B9 +:021F27000000B8 +:021F28000000B7 +:021F29000000B6 +:021F2A000000B5 +:021F2B000000B4 +:021F2C000000B3 +:021F2D000000B2 +:021F2E000000B1 +:021F2F000000B0 +:021F30000000AF +:021F31000000AE +:021F32000000AD +:021F33000000AC +:021F34000000AB +:021F35000000AA +:021F36000000A9 +:021F37000000A8 +:021F38000000A7 +:021F39000000A6 +:021F3A000000A5 +:021F3B000000A4 +:021F3C000000A3 +:021F3D000000A2 +:021F3E000000A1 +:021F3F000000A0 +:021F400000009F +:021F410000009E +:021F420000009D +:021F430000009C +:021F440000009B +:021F450000009A +:021F4600000099 +:021F4700000098 +:021F4800000097 +:021F4900000096 +:021F4A00000095 +:021F4B00000094 +:021F4C00000093 +:021F4D00000092 +:021F4E00000091 +:021F4F00000090 +:021F500000008F +:021F510000008E +:021F520000008D +:021F530000008C +:021F540000008B +:021F550000008A +:021F5600000089 +:021F5700000088 +:021F5800000087 +:021F5900000086 +:021F5A00000085 +:021F5B00000084 +:021F5C00000083 +:021F5D00000082 +:021F5E00000081 +:021F5F00000080 +:021F600000007F +:021F610000007E +:021F620000007D +:021F630000007C +:021F640000007B +:021F650000007A +:021F6600000079 +:021F6700000078 +:021F6800000077 +:021F6900000076 +:021F6A00000075 +:021F6B00000074 +:021F6C00000073 +:021F6D00000072 +:021F6E00000071 +:021F6F00000070 +:021F700000006F +:021F710000006E +:021F720000006D +:021F730000006C +:021F740000006B +:021F750000006A +:021F7600000069 +:021F7700000068 +:021F7800000067 +:021F7900000066 +:021F7A00000065 +:021F7B00000064 +:021F7C00000063 +:021F7D00000062 +:021F7E00000061 +:021F7F00000060 +:021F800000005F +:021F810000005E +:021F820000005D +:021F830000005C +:021F840000005B +:021F850000005A +:021F8600000059 +:021F8700000058 +:021F8800000057 +:021F8900000056 +:021F8A00000055 +:021F8B00000054 +:021F8C00000053 +:021F8D00000052 +:021F8E00000051 +:021F8F00000050 +:021F900000004F +:021F910000004E +:021F920000004D +:021F930000004C +:021F940000004B +:021F950000004A +:021F9600000049 +:021F9700000048 +:021F9800000047 +:021F9900000046 +:021F9A00000045 +:021F9B00000044 +:021F9C00000043 +:021F9D00000042 +:021F9E00000041 +:021F9F00000040 +:021FA00000003F +:021FA10000003E +:021FA20000003D +:021FA30000003C +:021FA40000003B +:021FA50000003A +:021FA600000039 +:021FA700000038 +:021FA800000037 +:021FA900000036 +:021FAA00000035 +:021FAB00000034 +:021FAC00000033 +:021FAD00000032 +:021FAE00000031 +:021FAF00000030 +:021FB00000002F +:021FB10000002E +:021FB20000002D +:021FB30000002C +:021FB40000002B +:021FB50000002A +:021FB600000029 +:021FB700000028 +:021FB800000027 +:021FB900000026 +:021FBA00000025 +:021FBB00000024 +:021FBC00000023 +:021FBD00000022 +:021FBE00000021 +:021FBF00000020 +:021FC00000001F +:021FC10000001E +:021FC20000001D +:021FC30000001C +:021FC40000001B +:021FC50000001A +:021FC600000019 +:021FC700000018 +:021FC800000017 +:021FC900000016 +:021FCA00000015 +:021FCB00000014 +:021FCC00000013 +:021FCD00000012 +:021FCE00000011 +:021FCF00000010 +:021FD00000000F +:021FD10000000E +:021FD20000000D +:021FD30000000C +:021FD40000000B +:021FD50000000A +:021FD600000009 +:021FD700000008 +:021FD800000007 +:021FD900000006 +:021FDA00000005 +:021FDB00000004 +:021FDC00000003 +:021FDD00000002 +:021FDE00000001 +:021FDF00000000 +:021FE0000000FF +:021FE1000000FE +:021FE2000000FD +:021FE3000000FC +:021FE4000000FB +:021FE5000000FA +:021FE6000000F9 +:021FE7000000F8 +:021FE8000000F7 +:021FE9000000F6 +:021FEA000000F5 +:021FEB000000F4 +:021FEC000000F3 +:021FED000000F2 +:021FEE000000F1 +:021FEF000000F0 +:021FF0000000EF +:021FF1000000EE +:021FF2000000ED +:021FF3000000EC +:021FF4000000EB +:021FF5000000EA +:021FF6000000E9 +:021FF7000000E8 +:021FF8000000E7 +:021FF9000000E6 +:021FFA000000E5 +:021FFB000000E4 +:021FFC000000E3 +:021FFD000000E2 +:021FFE000000E1 +:021FFF000000E0 +:00000001FF diff --git a/peripherals/vga/vga_buffer.vhd b/peripherals/vga/vga_buffer.vhd new file mode 100644 index 00000000..d079bf40 --- /dev/null +++ b/peripherals/vga/vga_buffer.vhd @@ -0,0 +1,84 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity vga_buffer is + port( + clk : in std_logic; + rst : in std_logic; + address_vga : in std_logic_vector(31 downto 0); + sdram_data : in std_logic_vector(15 downto 0); + sdram_address : out std_logic_vector(31 downto 0); + sdram_r : out std_logic; + VGA_R : out std_logic_vector(3 downto 0); + VGA_G : out std_logic_vector(3 downto 0); + VGA_B : out std_logic_vector(3 downto 0) + ); +end entity vga_buffer; + +architecture RTL of vga_buffer is + type state_type is (WAIT_READ, WRITING_BANK1, WRITING_BANK2, IDLE); + + signal bank : std_logic; + signal bank_last_value : std_logic; + signal index : natural; + + type mem is array (0 to 15) of std_logic_vector(15 downto 0); + signal memory : mem := (x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001",x"0001"); + +begin + + bank <= address_vga(3); + VGA_R <= memory(index)(3 downto 0); + VGA_G <= memory(index)(7 downto 4); + VGA_B <= memory(index)(11 downto 8); + index <= to_integer(unsigned(address_vga(3 downto 0))); + + process(clk, rst) is + variable state : state_type := WAIT_READ; + variable counter : natural := 0; + variable wait_cycles : natural; + begin + if rst = '1' then + state := IDLE; + elsif rising_edge(clk) then + case state is + when IDLE => + if bank /= bank_last_value then + bank_last_value <= bank; + sdram_address <= std_logic_vector(to_unsigned((to_integer(unsigned(address_vga)) + 8), 32)); + sdram_r <= '1'; + wait_cycles := 5; + state := WAIT_READ; + end if; + + when WAIT_READ => + wait_cycles := wait_cycles - 1; + if wait_cycles = 0 then + sdram_r <= '0'; + counter := 0; + if bank = '1' then + state := WRITING_BANK1; + else + state := WRITING_BANK2; + end if; + end if; + + when WRITING_BANK1 => + memory(counter) <= sdram_data; + counter := counter + 1; + if counter = 8 then + state := IDLE; + end if; + + when WRITING_BANK2 => + memory(8 + counter) <= sdram_data; + counter := counter + 1; + if counter = 8 then + state := IDLE; + end if; + end case; + end if; + end process; + +end architecture RTL; diff --git a/peripherals/vga/vga_controller.vhd b/peripherals/vga/vga_controller.vhd new file mode 100644 index 00000000..af9e91be --- /dev/null +++ b/peripherals/vga/vga_controller.vhd @@ -0,0 +1,101 @@ + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +ENTITY vga_controller IS + GENERIC( + h_pulse : INTEGER := 128; --horiztonal sync pulse width in pixels + h_bp : INTEGER := 88; --horiztonal back porch width in pixels + h_pixels : INTEGER := 800; --horiztonal display width in pixels + h_fp : INTEGER := 40; --horiztonal front porch width in pixels + h_pol : STD_LOGIC := '1'; --horizontal sync pulse polarity (1 = positive, 0 = negative) + v_pulse : INTEGER := 4; --vertical sync pulse width in rows + v_bp : INTEGER := 23; --vertical back porch width in rows + v_pixels : INTEGER := 600; --vertical display width in rows + v_fp : INTEGER := 1; --vertical front porch width in rows + v_pol : STD_LOGIC := '1'); --vertical sync pulse polarity (1 = positive, 0 = negative) + PORT( + pixel_clk : IN STD_LOGIC; --pixel clock at frequency of VGA mode being used + reset : IN STD_LOGIC; --active low asycnchronous reset + h_sync : OUT STD_LOGIC; --horiztonal sync pulse + v_sync : OUT STD_LOGIC; --vertical sync pulse + disp_ena : OUT STD_LOGIC; --display enable ('1' = display time, '0' = blanking time) + column : OUT INTEGER; --horizontal pixel coordinate + row : OUT INTEGER; --vertical pixel coordinate + addr : OUT std_logic_vector(12 downto 0); --SRAM Addr + n_blank : OUT STD_LOGIC; --direct blacking output to DAC + n_sync : OUT STD_LOGIC); --sync-on-green output to DAC +END vga_controller; + +ARCHITECTURE behavior OF vga_controller IS + CONSTANT h_period : INTEGER := h_pulse + h_bp + h_pixels + h_fp; --total number of pixel clocks in a row + CONSTANT v_period : INTEGER := v_pulse + v_bp + v_pixels + v_fp; --total number of rows in column + +BEGIN + + n_blank <= '1'; --no direct blanking + n_sync <= '0'; --no sync on green + + prc : PROCESS(pixel_clk, reset) + VARIABLE h_count : INTEGER RANGE 0 TO h_period - 1 := 0; --horizontal counter (counts the columns) + VARIABLE v_count : INTEGER RANGE 0 TO v_period - 1 := 0; --vertical counter (counts the rows) + BEGIN + IF (reset = '1') THEN --reset asserted + h_count := 0; --reset horizontal counter + v_count := 0; --reset vertical counter + h_sync <= NOT h_pol; --deassert horizontal sync + v_sync <= NOT v_pol; --deassert vertical sync + disp_ena <= '0'; --disable display + addr <= (others => '0'); + column <= 0; --reset column pixel coordinate + row <= 0; --reset row pixel coordinate + + ELSIF (pixel_clk'EVENT AND pixel_clk = '1') THEN + + --counters + IF (h_count < h_period - 1) THEN --horizontal counter (pixels) + h_count := h_count + 1; + ELSE + h_count := 0; + IF (v_count < v_period - 1) THEN --veritcal counter (rows) + v_count := v_count + 1; + ELSE + v_count := 0; + END IF; + END IF; + + --horizontal sync signal + IF (h_count < h_pixels + h_fp OR h_count >= h_pixels + h_fp + h_pulse) THEN + h_sync <= NOT h_pol; --deassert horiztonal sync pulse + ELSE + h_sync <= h_pol; --assert horiztonal sync pulse + END IF; + + --vertical sync signal + IF (v_count < v_pixels + v_fp OR v_count >= v_pixels + v_fp + v_pulse) THEN + v_sync <= NOT v_pol; --deassert vertical sync pulse + ELSE + v_sync <= v_pol; --assert vertical sync pulse + END IF; + + --set pixel coordinates + IF (h_count < h_pixels) THEN --horiztonal display time + addr <= Std_logic_vector(To_unsigned(h_count + (h_pixels * v_count),addr'length)); + column <= h_count; --set horiztonal pixel coordinate + END IF; + IF (v_count < v_pixels) THEN --vertical display time + row <= v_count; --set vertical pixel coordinate + END IF; + + --set display enable output + IF (h_count < h_pixels AND v_count < v_pixels) THEN --display time + disp_ena <= '1'; --enable display + ELSE --blanking time + disp_ena <= '0'; --disable display + END IF; + + END IF; + END PROCESS; + +END behavior; diff --git a/tests/Makefile b/tests/Makefile index 9441aad8..d2ea2a84 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -30,7 +30,7 @@ firmware32.hex: firmware.elf hex8tohex32.py start.o: start.S $(CC) -c -nostdlib start.S $(LDLIBS) -firmware.elf: main_vga.o syscalls.o start.o utils.o +firmware.elf: firmware.o syscalls.o start.o utils.o $(CC) $(LDFLAGS),-Map=firmware.map -o $@ $^ -T sections.ld $(LDLIBS) chmod -x firmware.elf diff --git a/tests/firmware.lss b/tests/firmware.lss index 9f6ebf3d..2abc1c8f 100644 --- a/tests/firmware.lss +++ b/tests/firmware.lss @@ -62,24 +62,24 @@ Disassembly of section .rom: 150: 00912a23 sw s1,20(sp) 154: 01212823 sw s2,16(sp) 158: 01312623 sw s3,12(sp) - 15c: 06000437 lui s0,0x6000 - 160: 00f00993 li s3,15 - 164: 000024b7 lui s1,0x2 - 168: 71048493 addi s1,s1,1808 # 2710 <_data_lma+0x1fd4> - 16c: 06008937 lui s2,0x6008 - 170: 01342023 sw s3,0(s0) # 6000000 <_edata+0x3fffbd4> - 174: 00048513 mv a0,s1 - 178: 100000ef jal ra,278 - 17c: 00440413 addi s0,s0,4 - 180: ff2418e3 bne s0,s2,170 - 184: 00000513 li a0,0 - 188: 01c12083 lw ra,28(sp) - 18c: 01812403 lw s0,24(sp) - 190: 01412483 lw s1,20(sp) - 194: 01012903 lw s2,16(sp) - 198: 00c12983 lw s3,12(sp) - 19c: 02010113 addi sp,sp,32 - 1a0: 00008067 ret + 15c: 01412423 sw s4,8(sp) + 160: 01512223 sw s5,4(sp) + 164: 040004b7 lui s1,0x4000 + 168: 00448913 addi s2,s1,4 # 4000004 <_edata+0x1fffbd8> + 16c: 00300a93 li s5,3 + 170: fc000a13 li s4,-64 + 174: 00002437 lui s0,0x2 + 178: 71040413 addi s0,s0,1808 # 2710 <_data_lma+0x1fd4> + 17c: fff00993 li s3,-1 + 180: 01592023 sw s5,0(s2) + 184: 0144a423 sw s4,8(s1) + 188: 00040513 mv a0,s0 + 18c: 0ec000ef jal ra,278 + 190: 00092023 sw zero,0(s2) + 194: 0134a423 sw s3,8(s1) + 198: 00040513 mv a0,s0 + 19c: 0dc000ef jal ra,278 + 1a0: fe1ff06f j 180 000001a4 <_access>: 1a4: 0040006f j 1a8 @@ -434,7 +434,7 @@ Disassembly of section .rom: 688: 000a0c63 beqz s4,6a0 <__call_exitprocs+0x98> 68c: 10442783 lw a5,260(s0) 690: 01478863 beq a5,s4,6a0 <__call_exitprocs+0x98> - 694: fff90913 addi s2,s2,-1 # 6007fff <_edata+0x4007bd3> + 694: fff90913 addi s2,s2,-1 698: ffc40413 addi s0,s0,-4 69c: fbdff06f j 658 <__call_exitprocs+0x50> 6a0: 0044a703 lw a4,4(s1) diff --git a/tests/firmware.map b/tests/firmware.map index d419256b..375d184a 100644 --- a/tests/firmware.map +++ b/tests/firmware.map @@ -35,8 +35,8 @@ Discarded input sections .fini_array 0x0000000000000000 0x4 /home/xtarke/Data/Apps/riscv/riscv32i/lib/gcc/riscv32-unknown-elf/8.2.0/crtbegin.o .init_array 0x0000000000000000 0x4 /home/xtarke/Data/Apps/riscv/riscv32i/lib/gcc/riscv32-unknown-elf/8.2.0/crtbegin.o .comment 0x0000000000000000 0x12 /home/xtarke/Data/Apps/riscv/riscv32i/lib/gcc/riscv32-unknown-elf/8.2.0/crtbegin.o - .data 0x0000000000000000 0x0 main_vga.o - .bss 0x0000000000000000 0x0 main_vga.o + .data 0x0000000000000000 0x0 firmware.o + .bss 0x0000000000000000 0x0 firmware.o .data 0x0000000000000000 0x0 syscalls.o .bss 0x0000000000000000 0x0 syscalls.o .data 0x0000000000000000 0x0 start.o @@ -82,7 +82,7 @@ Linker script and memory map LOAD /home/xtarke/Data/Apps/riscv/riscv32i/lib/gcc/riscv32-unknown-elf/8.2.0/../../../../riscv32-unknown-elf/lib/crt0.o LOAD /home/xtarke/Data/Apps/riscv/riscv32i/lib/gcc/riscv32-unknown-elf/8.2.0/crtbegin.o -LOAD main_vga.o +LOAD firmware.o LOAD syscalls.o LOAD start.o LOAD utils.o @@ -107,7 +107,7 @@ LOAD /home/xtarke/Data/Apps/riscv/riscv32i/lib/gcc/riscv32-unknown-elf/8.2.0/crt 0x0000000000000100 _start 0x0000000000000140 _init 0x0000000000000140 _fini - .text 0x0000000000000144 0x60 main_vga.o + .text 0x0000000000000144 0x60 firmware.o 0x0000000000000144 main .text 0x00000000000001a4 0xd4 syscalls.o 0x00000000000001a4 _getpid @@ -200,7 +200,7 @@ OUTPUT(firmware.elf elf32-littleriscv) .sbss 0x000000000200042c 0x4 syscalls.o .comment 0x0000000000000000 0x11 - .comment 0x0000000000000000 0x11 main_vga.o + .comment 0x0000000000000000 0x11 firmware.o 0x12 (size before relaxing) .comment 0x0000000000000011 0x12 syscalls.o .comment 0x0000000000000011 0x12 utils.o diff --git a/tests/firmware32.hex b/tests/firmware32.hex deleted file mode 100644 index a418bae1..00000000 --- a/tests/firmware32.hex +++ /dev/null @@ -1,730 +0,0 @@ -02001137 -80010113 -020001b7 -00018193 -ff010113 -00012023 -00012223 -00012423 -00012623 -120000ef -00100073 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -02000197 -f0018193 -42c18513 -42c18613 -40a60633 -00000593 -398000ef -00000517 -1b850513 -164000ef -208000ef -00012503 -00410593 -00000613 -00c000ef -1680006f -00008067 -fe010113 -00112e23 -00812c23 -00912a23 -01212823 -01312623 -06000437 -00f00993 -000024b7 -71048493 -06008937 -01342023 -00048513 -100000ef -00440413 -ff2418e3 -00000513 -01c12083 -01812403 -01412483 -01012903 -00c12983 -02010113 -00008067 -0040006f -000007b7 -71478793 -05500713 -100006b7 -00178793 -00e6a023 -0007c703 -fe071ae3 -00100073 -00000513 -00008067 -00c58733 -00e58c63 -100006b7 -00158593 -fff5c783 -00f6a023 -feb71ae3 -00060513 -00008067 -00000513 -00008067 -ff010113 -00112623 -094000ef -00200793 -00f52023 -fff00513 -00c12083 -01010113 -00008067 -00050793 -42c1a703 -00071663 -42c18713 -42e1a623 -42c1a503 -00a787b3 -42f1a623 -00008067 -00100073 -ff010113 -00112623 -00018613 -42c18793 -40c78633 -73c00593 -00018513 -170000ef -00c12083 -01010113 -00008067 -fff00793 -fff50513 -fef51ee3 -00008067 -00050593 -00000693 -00000613 -00000513 -2f40006f -4281a503 -00008067 -ff010113 -00000593 -00812423 -00112623 -00050413 -350000ef -73802503 -03c52783 -00078463 -000780e7 -00040513 -f79ff0ef -ff010113 -000007b7 -00812423 -00000437 -00078713 -00040413 -40e40433 -00912223 -00112623 -40245413 -00078493 -00041c63 -00812403 -00c12083 -00412483 -01010113 -e2dff06f -fff40413 -00241793 -00f487b3 -0007a783 -000780e7 -fd5ff06f -ff010113 -000007b7 -00812423 -00000437 -00078713 -00040413 -40e40433 -00912223 -01212023 -00112623 -40245413 -00000493 -00078913 -04849263 -dd9ff0ef -000007b7 -00000437 -00078713 -00040413 -40e40433 -40245413 -00000493 -00078913 -02849a63 -00c12083 -00812403 -00412483 -00012903 -01010113 -00008067 -00249793 -00f907b3 -0007a783 -00148493 -000780e7 -fa9ff06f -00249793 -00f907b3 -0007a783 -00148493 -000780e7 -fb9ff06f -00a5c7b3 -0037f793 -00c50733 -00079663 -00300793 -02c7e263 -00050793 -0ae57c63 -0005c683 -00178793 -00158593 -fed78fa3 -fee7e8e3 -00008067 -00357693 -00050793 -00068e63 -0005c683 -00178793 -00158593 -fed78fa3 -0037f693 -fe9ff06f -ffc77693 -fe068613 -06c7f463 -0005a383 -0045a283 -0085af83 -00c5af03 -0105ae83 -0145ae03 -0185a303 -01c5a883 -02458593 -0077a023 -ffc5a803 -0057a223 -01f7a423 -01e7a623 -01d7a823 -01c7aa23 -0067ac23 -0117ae23 -02478793 -ff07ae23 -fadff06f -0005a603 -00478793 -00458593 -fec7ae23 -fed7e8e3 -f4e7e8e3 -00008067 -00f00313 -00050713 -02c37e63 -00f77793 -0a079063 -08059263 -ff067693 -00f67613 -00e686b3 -00b72023 -00b72223 -00b72423 -00b72623 -01070713 -fed766e3 -00061463 -00008067 -40c306b3 -00269693 -00000297 -005686b3 -00c68067 -00b70723 -00b706a3 -00b70623 -00b705a3 -00b70523 -00b704a3 -00b70423 -00b703a3 -00b70323 -00b702a3 -00b70223 -00b701a3 -00b70123 -00b700a3 -00b70023 -00008067 -0ff5f593 -00859693 -00d5e5b3 -01059693 -00d5e5b3 -f6dff06f -00279693 -00000297 -005686b3 -00008293 -fa0680e7 -00028093 -ff078793 -40f70733 -00f60633 -f6c378e3 -f3dff06f -73802703 -00050313 -14872783 -00079663 -14c70793 -14f72423 -0047a703 -01f00813 -fff00513 -04e84a63 -00271893 -02030c63 -01178533 -08c52423 -1887a803 -00100613 -00e61633 -00c86833 -1907a423 -10d52423 -00200693 -00d31863 -18c7a683 -00c6e633 -18c7a623 -00170713 -00e7a223 -011787b3 -00b7a423 -00000513 -00008067 -fd010113 -01312e23 -73802983 -01412c23 -01512a23 -01612823 -02112623 -02812423 -02912223 -03212023 -01712623 -00050a93 -00058a13 -00100b13 -1489a483 -00048c63 -0044a403 -fff40913 -00241413 -00848433 -02095863 -02c12083 -02812403 -02412483 -02012903 -01c12983 -01812a03 -01412a83 -01012b03 -00c12b83 -03010113 -00008067 -000a0c63 -10442783 -01478863 -fff90913 -ffc40413 -fbdff06f -0044a703 -00442783 -fff70713 -03271c63 -0124a223 -fe0780e3 -1884a683 -012b1733 -0044ab83 -00d776b3 -02069263 -000780e7 -0044a783 -f77796e3 -1489a783 -fa978ce3 -f61ff06f -00042223 -fcdff06f -18c4a683 -08442583 -00d77733 -00071863 -000a8513 -000780e7 -fcdff06f -00058513 -000780e7 -fc1ff06f -6d696e55 -6d656c70 -65746e65 -79732064 -6d657473 -6c616320 -6163206c -64656c6c -00000a21 -02000000 -00000000 -020002ec -02000354 -020003bc -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000001 -00000000 -abcd330e -e66d1234 -0005deec -0000000b -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -02000000 diff --git a/tests/quartus.hex b/tests/quartus.hex index 19645dce..42924211 100644 --- a/tests/quartus.hex +++ b/tests/quartus.hex @@ -85,24 +85,24 @@ :0400540000912a23ca :04005500012128233a :04005600013126232b -:040057000600043764 -:0400580000f0099318 -:04005900000024b7c8 -:04005a007104849316 -:04005b0006008937db -:04005c000134202328 -:04005d000004851303 -:04005e00100000ef9f -:04005f000044041342 -:04006000ff2418e37e -:040061000000051383 -:0400620001c1208335 -:0400630001812403f0 -:0400640001412483af -:040065000101290369 -:0400660000c1298329 -:04006700020101137e -:0400680000008067ad +:04005700014124231c +:04005800015122230d +:04005900040004b7e4 +:04005a0000448913c2 +:04005b0000300a93d4 +:04005c00fc000a1387 +:04005d000000243744 +:04005e007104041312 +:04005f00fff0099312 +:0400600001592023ff +:040061000144a4238f +:04006200000405137e +:040063000ec000efdc +:04006400000920234c +:040065000134a4239b +:04006600000405137a +:040067000dc000efd9 +:04006800fe1ff06f18 :040069000040006fe4 :04006a00000007b7d4 :04006b0071478793bf