By doing this we don't need to call bios functions, we can just jsr directly to the addresses. This does mean that everytime the bios changes the bootloader has to change, but ideally all the bootloader does is load the bios and then get remapped out of memory. Any important drivers like file system can be loaded from the bootloader. This also means that the runtime functions are located in the bios for the bootloader, so the rom will have to stay mapped in until the kernel is started, at which point it will have its own runtime and the rom and bootloader are no longer needed.
107 lines
7.0 KiB
XML
107 lines
7.0 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<efx:project name="super6502" description="" last_change_date="Tue August 8 2023 21:51:46" location="/home/byron/Projects/super6502/hw/efinix_fpga" sw_version="2023.1.150" last_run_state="pass" last_run_tool="efx_pgm" last_run_flow="bitstream" config_result_in_sync="true" design_ood="sync" place_ood="sync" route_ood="sync" xmlns:efx="http://www.efinixinc.com/enf_proj" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.efinixinc.com/enf_proj enf_proj.xsd">
|
|
<efx:device_info>
|
|
<efx:family name="Trion"/>
|
|
<efx:device name="T20F256"/>
|
|
<efx:timing_model name="C4"/>
|
|
</efx:device_info>
|
|
<efx:design_info def_veri_version="sv_09" def_vhdl_version="vhdl_2008">
|
|
<efx:top_module name="super6502"/>
|
|
<efx:design_file name="super6502.sv" version="default" library="default"/>
|
|
<efx:design_file name="leds.sv" version="default" library="default"/>
|
|
<efx:design_file name="addr_decode.sv" version="default" library="default"/>
|
|
<efx:design_file name="sdram_adapter.sv" version="default" library="default"/>
|
|
<efx:design_file name="timer.sv" version="default" library="default"/>
|
|
<efx:design_file name="interrupt_controller.sv" version="default" library="default"/>
|
|
<efx:design_file name="multiplier.sv" version="default" library="default"/>
|
|
<efx:design_file name="divider_wrapper.sv" version="default" library="default"/>
|
|
<efx:design_file name="uart_wrapper.sv" version="default" library="default"/>
|
|
<efx:design_file name="sd_controller.sv" version="default" library="default"/>
|
|
<efx:design_file name="crc7.sv" version="default" library="default"/>
|
|
<efx:design_file name="rom.sv" version="default" library="default"/>
|
|
<efx:design_file name="spi_controller.sv" version="default" library="default"/>
|
|
<efx:top_vhdl_arch name=""/>
|
|
</efx:design_info>
|
|
<efx:constraint_info>
|
|
<efx:sdc_file name="super6502.pt.sdc"/>
|
|
<efx:inter_file name=""/>
|
|
</efx:constraint_info>
|
|
<efx:sim_info/>
|
|
<efx:misc_info/>
|
|
<efx:ip_info>
|
|
<efx:ip instance_name="sdram_controller" path="ip/sdram_controller/settings.json">
|
|
<efx:ip_src_file name="sdram_controller.v"/>
|
|
</efx:ip>
|
|
<efx:ip instance_name="divider" path="ip/divider/settings.json">
|
|
<efx:ip_src_file name="divider.v"/>
|
|
</efx:ip>
|
|
<efx:ip instance_name="uart" path="ip/uart/settings.json">
|
|
<efx:ip_src_file name="uart.v"/>
|
|
</efx:ip>
|
|
</efx:ip_info>
|
|
<efx:synthesis tool_name="efx_map">
|
|
<efx:param name="work_dir" value="work_syn" value_type="e_string"/>
|
|
<efx:param name="write_efx_verilog" value="on" value_type="e_bool"/>
|
|
<efx:param name="mode" value="speed" value_type="e_option"/>
|
|
<efx:param name="max_ram" value="-1" value_type="e_integer"/>
|
|
<efx:param name="max_mult" value="-1" value_type="e_integer"/>
|
|
<efx:param name="infer-clk-enable" value="3" value_type="e_option"/>
|
|
<efx:param name="infer-sync-set-reset" value="1" value_type="e_option"/>
|
|
<efx:param name="fanout-limit" value="0" value_type="e_integer"/>
|
|
<efx:param name="bram_output_regs_packing" value="1" value_type="e_option"/>
|
|
<efx:param name="retiming" value="1" value_type="e_option"/>
|
|
<efx:param name="seq_opt" value="1" value_type="e_option"/>
|
|
<efx:param name="blast_const_operand_adders" value="1" value_type="e_option"/>
|
|
<efx:param name="operator-sharing" value="0" value_type="e_option"/>
|
|
<efx:param name="optimize-adder-tree" value="0" value_type="e_option"/>
|
|
<efx:param name="mult_input_regs_packing" value="1" value_type="e_option"/>
|
|
<efx:param name="mult_output_regs_packing" value="1" value_type="e_option"/>
|
|
<efx:param name="min-sr-fanout" value="0" value_type="e_option"/>
|
|
<efx:param name="seq-opt-sync-only" value="0" value_type="e_option"/>
|
|
<efx:param name="blackbox-error" value="1" value_type="e_option"/>
|
|
<efx:param name="allow-const-ram-index" value="0" value_type="e_option"/>
|
|
<efx:param name="hdl-compile-unit" value="1" value_type="e_option"/>
|
|
<efx:param name="create-onehot-fsms" value="0" value_type="e_option"/>
|
|
<efx:param name="min-ce-fanout" value="0" value_type="e_integer"/>
|
|
<efx:param name="mult-decomp-retime" value="0" value_type="e_option"/>
|
|
<efx:param name="optimize-zero-init-rom" value="1" value_type="e_option"/>
|
|
<efx:param name="include" value="ip/sdram_controller" value_type="e_string"/>
|
|
<efx:param name="include" value="ip/divider" value_type="e_string"/>
|
|
<efx:param name="include" value="ip/uart" value_type="e_string"/>
|
|
</efx:synthesis>
|
|
<efx:place_and_route tool_name="efx_pnr">
|
|
<efx:param name="work_dir" value="work_pnr" value_type="e_string"/>
|
|
<efx:param name="verbose" value="off" value_type="e_bool"/>
|
|
<efx:param name="load_delaym" value="on" value_type="e_bool"/>
|
|
<efx:param name="optimization_level" value="NULL" value_type="e_option"/>
|
|
<efx:param name="seed" value="1" value_type="e_integer"/>
|
|
<efx:param name="placer_effort_level" value="2" value_type="e_option"/>
|
|
<efx:param name="max_threads" value="-1" value_type="e_integer"/>
|
|
</efx:place_and_route>
|
|
<efx:bitstream_generation tool_name="efx_pgm">
|
|
<efx:param name="mode" value="active" value_type="e_option"/>
|
|
<efx:param name="width" value="1" value_type="e_option"/>
|
|
<efx:param name="enable_roms" value="smart" value_type="e_option"/>
|
|
<efx:param name="spi_low_power_mode" value="on" value_type="e_bool"/>
|
|
<efx:param name="io_weak_pullup" value="on" value_type="e_bool"/>
|
|
<efx:param name="oscillator_clock_divider" value="DIV8" value_type="e_option"/>
|
|
<efx:param name="bitstream_compression" value="off" value_type="e_bool"/>
|
|
<efx:param name="enable_external_master_clock" value="off" value_type="e_bool"/>
|
|
<efx:param name="active_capture_clk_edge" value="posedge" value_type="e_option"/>
|
|
<efx:param name="jtag_usercode" value="0xFFFFFFFF" value_type="e_string"/>
|
|
<efx:param name="release_tri_then_reset" value="on" value_type="e_bool"/>
|
|
<efx:param name="cold_boot" value="off" value_type="e_bool"/>
|
|
<efx:param name="cascade" value="off" value_type="e_option"/>
|
|
<efx:param name="generate_bit" value="on" value_type="e_bool"/>
|
|
<efx:param name="generate_bitbin" value="off" value_type="e_bool"/>
|
|
<efx:param name="generate_hex" value="on" value_type="e_bool"/>
|
|
<efx:param name="generate_hexbin" value="off" value_type="e_bool"/>
|
|
<efx:param name="four_byte_addressing" value="off" value_type="e_bool"/>
|
|
</efx:bitstream_generation>
|
|
<efx:debugger>
|
|
<efx:param name="work_dir" value="work_dbg" value_type="e_string"/>
|
|
<efx:param name="auto_instantiation" value="off" value_type="e_bool"/>
|
|
<efx:param name="profile" value="debug_profile.wizard.json" value_type="e_string"/>
|
|
</efx:debugger>
|
|
</efx:project>
|