├── .github └── workflows │ └── build.yml ├── .gitignore ├── Dockerfile ├── HOW_TO_GET_YOSYS ├── IDVII ├── lib │ ├── osu018_stdcells │ │ ├── osu018_stdcells.lib │ │ ├── scripts │ │ │ ├── ORIG_osu018_stdcells.v │ │ │ ├── non_udp_cells.v │ │ │ └── non_udp_cells.ys │ │ └── stdcells.fl │ └── yosys │ │ └── techlibs │ │ └── xilinx │ │ └── cells_sim.v └── src │ └── fl │ ├── bifrost │ ├── README │ ├── ack_pulse_arbiter.fl │ ├── ack_pulse_delay.fl │ ├── ack_pulse_merge.fl │ ├── bifrost.fl │ ├── convert2bundle.fl │ ├── load.fl │ ├── make_interconnect.fl │ └── mk_bundle_arb_merge.fl │ ├── design │ ├── Makefile │ ├── connectivity.fl │ ├── generate_pexlif.fl │ ├── hfl.fl │ ├── load.fl │ ├── make_generic_pexlifs.fl │ ├── memory_models.fl │ ├── misc.fl │ ├── miter.fl │ ├── monitor.fl │ ├── navigate.fl │ ├── normalize_pexlif.fl │ ├── obsolete.fl │ ├── pexlif.fl │ ├── pexlif_visualize.fl │ ├── pexlif_visualize.tcl │ ├── primes.fl │ ├── read_verilog.fl │ ├── relational_ste.fl │ ├── simplify.fl │ ├── ste_design.fl │ ├── tools.fl │ ├── util.fl │ └── yosys_lib.fl │ ├── gui │ ├── idv_libraries │ │ └── arithmetic_library │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ └── new_make_arithmetic_db.fl │ ├── idv_tests │ │ ├── .gitignore │ │ ├── CSA.fl │ │ ├── adder.fl │ │ ├── collatz_imp.v │ │ ├── crc_demo │ │ │ ├── crc_imp.fl │ │ │ ├── crc_spec.fl │ │ │ ├── g │ │ │ └── idv_crc.fl │ │ ├── example.fl │ │ ├── g │ │ ├── hfl_mod_mul.fl │ │ ├── idea.fl │ │ ├── idv_ALU.fl │ │ ├── idv_adder.fl │ │ ├── idv_big_adder.fl │ │ ├── idv_cephalopode.fl │ │ ├── idv_collatz.fl │ │ ├── idv_find_first.fl │ │ ├── idv_mod.fl │ │ ├── idv_mod_mul.fl │ │ ├── idv_mod_mul2.fl │ │ ├── idv_non_state_matching.fl │ │ ├── idv_test.fl │ │ ├── non_state_matching.fl │ │ ├── spec_add.fl │ │ ├── spec_big_add.fl │ │ ├── spec_collatz.fl │ │ ├── spec_find_first.fl │ │ ├── spec_mod.fl │ │ ├── spec_mod_mul.fl │ │ ├── spec_mod_mul2.fl │ │ ├── spec_test.fl │ │ └── test.fl │ ├── load.fl │ └── sch_draw │ │ ├── draw_sch.fl │ │ ├── draw_sch.tcl │ │ ├── idv_gui.fl │ │ ├── idv_gui.tcl │ │ ├── images │ │ ├── X_pat.xbm │ │ ├── black.xbm │ │ ├── bufs2wire.gif │ │ ├── const_prop.gif │ │ ├── db_replace.gif │ │ ├── detach.gif │ │ ├── duplicate.gif │ │ ├── fev.gif │ │ ├── flatten.gif │ │ ├── fold.gif │ │ ├── folder.gif │ │ ├── merge.gif │ │ ├── new_transf.gif │ │ ├── perceptron.gif │ │ ├── rename_wires.gif │ │ ├── retime_fwd.gif │ │ ├── unfold.gif │ │ └── wire2bufs.gif │ │ ├── load.fl │ │ ├── types.fl │ │ ├── verilog_filter.sed │ │ ├── waveform.tcl │ │ └── yosys_scripts │ │ ├── fpga_xilinx_xc7.fl │ │ └── osu018_synthesis.fl │ ├── isomatch │ └── isomatch.fl │ └── verilog │ ├── grammar.fl │ ├── pretty-pexlif.fl │ ├── pretty-verilog.fl │ ├── test.fl │ └── test.v ├── LICENSE ├── NOTICE ├── README.md ├── TODO ├── ckt_examples ├── M65C02 │ ├── ClkGen.xaw │ ├── M65C02.fl │ ├── M65C02.tcl │ ├── M65C02.ucf │ ├── M65C02.v │ ├── M65C02_ALU.v │ ├── M65C02_AddrGen.v │ ├── M65C02_BCD.v │ ├── M65C02_BIN.v │ ├── M65C02_Base.ucf │ ├── M65C02_Base.v │ ├── M65C02_ClkGen.v │ ├── M65C02_Core.ucf │ ├── M65C02_Core.v │ ├── M65C02_Decoder_ROM.coe │ ├── M65C02_IntHndlr.v │ ├── M65C02_MPC.v │ ├── M65C02_MPCv3.v │ ├── M65C02_MPCv4.v │ ├── M65C02_RAM.txt │ ├── M65C02_RAM.v │ ├── M65C02_uPgm_V3a.coe │ ├── README │ └── fedet.v ├── diff_cache │ ├── README │ ├── ex0.fl │ ├── ex1_a.fl │ ├── ex1_b.fl │ ├── ex2.fl │ ├── ex3.fl │ ├── ex4.fl │ └── ex5.fl ├── m32632 │ ├── LICENSE.LGPLv21 │ ├── TRIPUTER │ │ ├── TRIPUTER.qsf │ │ ├── TRIPUTER.qws │ │ ├── TRIPUTER.sdc │ │ ├── TRIPUTER.sof.zip │ │ ├── TRIPUTER.v │ │ ├── TRIPUTER_SIMU.v │ │ ├── TRIPUTER_V01.pdf │ │ ├── boot_rom.txt │ │ ├── monitor.32K │ │ └── read_me.txt │ ├── docs │ │ ├── M32632_AR_V3.pdf │ │ └── M32632_UM_V3.pdf │ ├── rtl │ │ ├── .gitignore │ │ ├── ADDR_UNIT.v │ │ ├── ALIGNER.v │ │ ├── CACHE_LOGIK.v │ │ ├── DATENPFAD.v │ │ ├── DCACHE.fl │ │ ├── DCACHE.v │ │ ├── DECODER.v │ │ ├── DP_FPU.v │ │ ├── ICACHE.v │ │ ├── ICACHE_SM.v │ │ ├── I_PFAD.v │ │ ├── M32632.fl │ │ ├── M32632.v │ │ ├── REGISTERS.v │ │ ├── SP_FPU.fl │ │ ├── SP_FPU.v │ │ ├── STEUERUNG.v │ │ ├── STEUER_MISC.v │ │ └── TOP_MISC.v │ └── software │ │ └── ans32k.exe ├── or1200_hp │ └── trunk │ │ ├── bench │ │ ├── rtl_cm2 │ │ │ └── verilog │ │ │ │ ├── or1200_tb_cm2.v │ │ │ │ └── random_rom_wb_cm2.v │ │ ├── rtl_cm3 │ │ │ └── verilog │ │ │ │ ├── or1200_tb_cm3.v │ │ │ │ └── random_rom_wb_cm3.v │ │ ├── rtl_cm4 │ │ │ └── verilog │ │ │ │ ├── or1200_tb_cm4.v │ │ │ │ └── random_rom_wb_cm4.v │ │ └── rtl_orig │ │ │ └── verilog │ │ │ ├── or1200_tb.v │ │ │ └── random_rom_wb.v │ │ ├── doc │ │ └── Hyper_Pipelined_OR1200_Spec_Draft.pdf │ │ ├── ise │ │ ├── ise_cm2 │ │ │ ├── dc_ram_blk_cm2.ngc │ │ │ ├── dc_tag_blk_cm2.ngc │ │ │ ├── dtlb_mr_blk_cm2.ngc │ │ │ ├── dtlb_tr_blk_cm2.ngc │ │ │ ├── ic_ram_blk_cm2.ngc │ │ │ ├── ic_tag_blk_cm2.ngc │ │ │ ├── itlb_mr_blk_cm2.ngc │ │ │ ├── itlb_tr_blk_cm2.ngc │ │ │ ├── or1200_defines.v │ │ │ ├── or1200_top_cm2.twr │ │ │ ├── or1200_top_cm2.ucf │ │ │ └── rf_dist_cm2.ngc │ │ ├── ise_cm2_top │ │ │ ├── dc_ram_blk_cm2.ngc │ │ │ ├── dc_tag_blk_cm2.ngc │ │ │ ├── dtlb_mr_blk_cm2.ngc │ │ │ ├── dtlb_tr_blk_cm2.ngc │ │ │ ├── ic_ram_blk_cm2.ngc │ │ │ ├── ic_tag_blk_cm2.ngc │ │ │ ├── itlb_mr_blk_cm2.ngc │ │ │ ├── itlb_tr_blk_cm2.ngc │ │ │ ├── or1200_defines.v │ │ │ ├── or1200_top_cm2_top.twr │ │ │ ├── or1200_top_cm2_top.ucf │ │ │ └── rf_dist_cm2.ngc │ │ ├── ise_cm3 │ │ │ ├── dc_ram_blk_cm3.ngc │ │ │ ├── dc_tag_blk_cm3.ngc │ │ │ ├── dtlb_mr_blk_cm3.ngc │ │ │ ├── dtlb_tr_blk_cm3.ngc │ │ │ ├── ic_ram_blk_cm3.ngc │ │ │ ├── ic_tag_blk_cm3.ngc │ │ │ ├── itlb_mr_blk_cm3.ngc │ │ │ ├── itlb_tr_blk_cm3.ngc │ │ │ ├── or1200_defines.v │ │ │ ├── or1200_top_cm3.twr │ │ │ ├── or1200_top_cm3.ucf │ │ │ └── rf_dist_cm3.ngc │ │ ├── ise_cm3_top │ │ │ ├── dc_ram_blk_cm3.ngc │ │ │ ├── dc_tag_blk_cm3.ngc │ │ │ ├── dtlb_mr_blk_cm3.ngc │ │ │ ├── dtlb_tr_blk_cm3.ngc │ │ │ ├── ic_ram_blk_cm3.ngc │ │ │ ├── ic_tag_blk_cm3.ngc │ │ │ ├── itlb_mr_blk_cm3.ngc │ │ │ ├── itlb_tr_blk_cm3.ngc │ │ │ ├── or1200_defines.v │ │ │ ├── or1200_top_cm3_top.twr │ │ │ ├── or1200_top_cm3_top.ucf │ │ │ └── rf_dist_cm3.ngc │ │ ├── ise_cm4 │ │ │ ├── dc_ram_blk_cm4.ngc │ │ │ ├── dc_tag_blk_cm4.ngc │ │ │ ├── dtlb_mr_blk_cm4.ngc │ │ │ ├── dtlb_tr_blk_cm4.ngc │ │ │ ├── ic_ram_blk_cm4.ngc │ │ │ ├── ic_tag_blk_cm4.ngc │ │ │ ├── itlb_mr_blk_cm4.ngc │ │ │ ├── itlb_tr_blk_cm4.ngc │ │ │ ├── or1200_defines.v │ │ │ ├── or1200_top_cm4.twr │ │ │ ├── or1200_top_cm4.ucf │ │ │ └── rf_dist_cm4.ngc │ │ ├── ise_cm4_top │ │ │ ├── dc_ram_blk_cm4.ngc │ │ │ ├── dc_tag_blk_cm4.ngc │ │ │ ├── dtlb_mr_blk_cm4.ngc │ │ │ ├── dtlb_tr_blk_cm4.ngc │ │ │ ├── ic_ram_blk_cm4.ngc │ │ │ ├── ic_tag_blk_cm4.ngc │ │ │ ├── itlb_mr_blk_cm4.ngc │ │ │ ├── itlb_tr_blk_cm4.ngc │ │ │ ├── or1200_defines.v │ │ │ ├── or1200_top_cm4_top.twr │ │ │ ├── or1200_top_cm4_top.ucf │ │ │ └── rf_dist_cm4.ngc │ │ └── ise_orig │ │ │ ├── dc_ram_blk.ngc │ │ │ ├── dc_tag_blk.ngc │ │ │ ├── dtlb_mr_blk.ngc │ │ │ ├── dtlb_tr_blk.ngc │ │ │ ├── ic_ram_blk.ngc │ │ │ ├── ic_tag_blk.ngc │ │ │ ├── itlb_mr_blk.ngc │ │ │ ├── itlb_tr_blk.ngc │ │ │ ├── or1200_defines.v │ │ │ ├── or1200_top.twr │ │ │ ├── or1200_top.ucf │ │ │ └── rf_dist.ngc │ │ ├── rtl │ │ ├── or1200_defines.v │ │ ├── rtl_cm2 │ │ │ └── verilog │ │ │ │ ├── or1200_alu.v │ │ │ │ ├── or1200_cfgr.v │ │ │ │ ├── or1200_cpu.v │ │ │ │ ├── or1200_ctrl.v │ │ │ │ ├── or1200_dc_fsm.v │ │ │ │ ├── or1200_dc_ram.v │ │ │ │ ├── or1200_dc_tag.v │ │ │ │ ├── or1200_dc_top.v │ │ │ │ ├── or1200_dmmu_tlb.v │ │ │ │ ├── or1200_dmmu_top.v │ │ │ │ ├── or1200_du.v │ │ │ │ ├── or1200_except.v │ │ │ │ ├── or1200_freeze.v │ │ │ │ ├── or1200_genpc.v │ │ │ │ ├── or1200_gmultp2_32x32.v │ │ │ │ ├── or1200_gmultp2_32x32_cm2_pipe.v │ │ │ │ ├── or1200_ic_fsm.v │ │ │ │ ├── or1200_ic_ram.v │ │ │ │ ├── or1200_ic_tag.v │ │ │ │ ├── or1200_ic_top.v │ │ │ │ ├── or1200_if.v │ │ │ │ ├── or1200_immu_tlb.v │ │ │ │ ├── or1200_immu_top.v │ │ │ │ ├── or1200_iwb_biu.v │ │ │ │ ├── or1200_lsu.v │ │ │ │ ├── or1200_mem2reg.v │ │ │ │ ├── or1200_mult_mac.v │ │ │ │ ├── or1200_operandmuxes.v │ │ │ │ ├── or1200_pic.v │ │ │ │ ├── or1200_pm.v │ │ │ │ ├── or1200_qmem_top.v │ │ │ │ ├── or1200_reg2mem.v │ │ │ │ ├── or1200_rf.v │ │ │ │ ├── or1200_sb.v │ │ │ │ ├── or1200_sprs.v │ │ │ │ ├── or1200_top.v │ │ │ │ ├── or1200_top_cm2_top.v │ │ │ │ ├── or1200_tt.v │ │ │ │ ├── or1200_wb_biu.v │ │ │ │ └── or1200_wbmux.v │ │ ├── rtl_cm3 │ │ │ └── verilog │ │ │ │ ├── or1200_alu.v │ │ │ │ ├── or1200_cfgr.v │ │ │ │ ├── or1200_cpu.v │ │ │ │ ├── or1200_ctrl.v │ │ │ │ ├── or1200_dc_fsm.v │ │ │ │ ├── or1200_dc_ram.v │ │ │ │ ├── or1200_dc_tag.v │ │ │ │ ├── or1200_dc_top.v │ │ │ │ ├── or1200_dmmu_tlb.v │ │ │ │ ├── or1200_dmmu_top.v │ │ │ │ ├── or1200_du.v │ │ │ │ ├── or1200_except.v │ │ │ │ ├── or1200_freeze.v │ │ │ │ ├── or1200_genpc.v │ │ │ │ ├── or1200_gmultp2_32x32.v │ │ │ │ ├── or1200_gmultp2_32x32_cm3_pipe.v │ │ │ │ ├── or1200_ic_fsm.v │ │ │ │ ├── or1200_ic_ram.v │ │ │ │ ├── or1200_ic_tag.v │ │ │ │ ├── or1200_ic_top.v │ │ │ │ ├── or1200_if.v │ │ │ │ ├── or1200_immu_tlb.v │ │ │ │ ├── or1200_immu_top.v │ │ │ │ ├── or1200_iwb_biu.v │ │ │ │ ├── or1200_lsu.v │ │ │ │ ├── or1200_mem2reg.v │ │ │ │ ├── or1200_mult_mac.v │ │ │ │ ├── or1200_operandmuxes.v │ │ │ │ ├── or1200_pic.v │ │ │ │ ├── or1200_pm.v │ │ │ │ ├── or1200_qmem_top.v │ │ │ │ ├── or1200_reg2mem.v │ │ │ │ ├── or1200_rf.v │ │ │ │ ├── or1200_sb.v │ │ │ │ ├── or1200_sprs.v │ │ │ │ ├── or1200_top.v │ │ │ │ ├── or1200_top_cm3_top.v │ │ │ │ ├── or1200_tt.v │ │ │ │ ├── or1200_wb_biu.v │ │ │ │ └── or1200_wbmux.v │ │ ├── rtl_cm4 │ │ │ └── verilog │ │ │ │ ├── or1200_alu.v │ │ │ │ ├── or1200_cfgr.v │ │ │ │ ├── or1200_cpu.v │ │ │ │ ├── or1200_ctrl.v │ │ │ │ ├── or1200_dc_fsm.v │ │ │ │ ├── or1200_dc_ram.v │ │ │ │ ├── or1200_dc_tag.v │ │ │ │ ├── or1200_dc_top.v │ │ │ │ ├── or1200_dmmu_tlb.v │ │ │ │ ├── or1200_dmmu_top.v │ │ │ │ ├── or1200_du.v │ │ │ │ ├── or1200_except.v │ │ │ │ ├── or1200_freeze.v │ │ │ │ ├── or1200_genpc.v │ │ │ │ ├── or1200_gmultp2_32x32.v │ │ │ │ ├── or1200_gmultp2_32x32_cm4_pipe.v │ │ │ │ ├── or1200_ic_fsm.v │ │ │ │ ├── or1200_ic_ram.v │ │ │ │ ├── or1200_ic_tag.v │ │ │ │ ├── or1200_ic_top.v │ │ │ │ ├── or1200_if.v │ │ │ │ ├── or1200_immu_tlb.v │ │ │ │ ├── or1200_immu_top.v │ │ │ │ ├── or1200_iwb_biu.v │ │ │ │ ├── or1200_lsu.v │ │ │ │ ├── or1200_mem2reg.v │ │ │ │ ├── or1200_mult_mac.v │ │ │ │ ├── or1200_operandmuxes.v │ │ │ │ ├── or1200_pic.v │ │ │ │ ├── or1200_pm.v │ │ │ │ ├── or1200_qmem_top.v │ │ │ │ ├── or1200_reg2mem.v │ │ │ │ ├── or1200_rf.v │ │ │ │ ├── or1200_sb.v │ │ │ │ ├── or1200_sprs.v │ │ │ │ ├── or1200_top.v │ │ │ │ ├── or1200_top_cm4_top.v │ │ │ │ ├── or1200_tt.v │ │ │ │ ├── or1200_wb_biu.v │ │ │ │ └── or1200_wbmux.v │ │ ├── rtl_orig │ │ │ └── verilog │ │ │ │ ├── or1200_alu.v │ │ │ │ ├── or1200_cfgr.v │ │ │ │ ├── or1200_cpu.v │ │ │ │ ├── or1200_ctrl.v │ │ │ │ ├── or1200_dc_fsm.v │ │ │ │ ├── or1200_dc_ram.v │ │ │ │ ├── or1200_dc_tag.v │ │ │ │ ├── or1200_dc_top.v │ │ │ │ ├── or1200_defines.v │ │ │ │ ├── or1200_dmmu_tlb.v │ │ │ │ ├── or1200_dmmu_top.v │ │ │ │ ├── or1200_du.v │ │ │ │ ├── or1200_except.v │ │ │ │ ├── or1200_freeze.v │ │ │ │ ├── or1200_genpc.v │ │ │ │ ├── or1200_gmultp2_32x32.v │ │ │ │ ├── or1200_ic_fsm.v │ │ │ │ ├── or1200_ic_ram.v │ │ │ │ ├── or1200_ic_tag.v │ │ │ │ ├── or1200_ic_top.v │ │ │ │ ├── or1200_if.v │ │ │ │ ├── or1200_immu_tlb.v │ │ │ │ ├── or1200_immu_top.v │ │ │ │ ├── or1200_iwb_biu.v │ │ │ │ ├── or1200_lsu.v │ │ │ │ ├── or1200_mem2reg.v │ │ │ │ ├── or1200_mult_mac.v │ │ │ │ ├── or1200_operandmuxes.v │ │ │ │ ├── or1200_pic.v │ │ │ │ ├── or1200_pm.v │ │ │ │ ├── or1200_qmem_top.v │ │ │ │ ├── or1200_reg2mem.v │ │ │ │ ├── or1200_rf.v │ │ │ │ ├── or1200_sb.v │ │ │ │ ├── or1200_sprs.v │ │ │ │ ├── or1200_top.fl │ │ │ │ ├── or1200_top.v │ │ │ │ ├── or1200_tt.v │ │ │ │ ├── or1200_wb_biu.v │ │ │ │ ├── or1200_wbmux.v │ │ │ │ └── top.fl │ │ ├── rtl_virtex_cm2 │ │ │ └── verilog │ │ │ │ ├── dc_ram_blk_cm2.v │ │ │ │ ├── dc_ram_sub.v │ │ │ │ ├── dc_tag_blk_cm2.v │ │ │ │ ├── dc_tag_sub.v │ │ │ │ ├── dtlb_mr_blk_cm2.v │ │ │ │ ├── dtlb_mr_sub.v │ │ │ │ ├── dtlb_tr_blk_cm2.v │ │ │ │ ├── dtlb_tr_sub.v │ │ │ │ ├── ic_ram_blk_cm2.v │ │ │ │ ├── ic_ram_sub.v │ │ │ │ ├── ic_tag_blk_cm2.v │ │ │ │ ├── ic_tag_sub.v │ │ │ │ ├── itlb_mr_blk_cm2.v │ │ │ │ ├── itlb_mr_sub.v │ │ │ │ ├── itlb_tr_blk_cm2.v │ │ │ │ ├── itlb_tr_sub.v │ │ │ │ ├── rf_dist_cm2_model.v │ │ │ │ ├── rf_dist_cm2_xil.v │ │ │ │ └── rf_sub.v │ │ ├── rtl_virtex_cm3 │ │ │ └── verilog │ │ │ │ ├── dc_ram_blk_cm3.v │ │ │ │ ├── dc_ram_sub.v │ │ │ │ ├── dc_tag_blk_cm3.v │ │ │ │ ├── dc_tag_sub.v │ │ │ │ ├── dtlb_mr_blk_cm3.v │ │ │ │ ├── dtlb_mr_sub.v │ │ │ │ ├── dtlb_tr_blk_cm3.v │ │ │ │ ├── dtlb_tr_sub.v │ │ │ │ ├── ic_ram_blk_cm3.v │ │ │ │ ├── ic_ram_sub.v │ │ │ │ ├── ic_tag_blk_cm3.v │ │ │ │ ├── ic_tag_sub.v │ │ │ │ ├── itlb_mr_blk_cm3.v │ │ │ │ ├── itlb_mr_sub.v │ │ │ │ ├── itlb_tr_blk_cm3.v │ │ │ │ ├── itlb_tr_sub.v │ │ │ │ ├── rf_dist_cm3_model.v │ │ │ │ ├── rf_dist_cm3_xil.v │ │ │ │ └── rf_sub.v │ │ ├── rtl_virtex_cm4 │ │ │ └── verilog │ │ │ │ ├── dc_ram_blk_cm4.v │ │ │ │ ├── dc_ram_sub.v │ │ │ │ ├── dc_tag_blk_cm4.v │ │ │ │ ├── dc_tag_sub.v │ │ │ │ ├── dtlb_mr_blk_cm4.v │ │ │ │ ├── dtlb_mr_sub.v │ │ │ │ ├── dtlb_tr_blk_cm4.v │ │ │ │ ├── dtlb_tr_sub.v │ │ │ │ ├── ic_ram_blk_cm4.v │ │ │ │ ├── ic_ram_sub.v │ │ │ │ ├── ic_tag_blk_cm4.v │ │ │ │ ├── ic_tag_sub.v │ │ │ │ ├── itlb_mr_blk_cm4.v │ │ │ │ ├── itlb_mr_sub.v │ │ │ │ ├── itlb_tr_blk_cm4.v │ │ │ │ ├── itlb_tr_sub.v │ │ │ │ ├── rf_dist_cm4_model.v │ │ │ │ ├── rf_dist_cm4_xil.v │ │ │ │ └── rf_sub.v │ │ ├── rtl_virtex_orig │ │ │ └── verilog │ │ │ │ ├── dc_ram_blk.v │ │ │ │ ├── dc_ram_sub.v │ │ │ │ ├── dc_tag_blk.v │ │ │ │ ├── dc_tag_sub.v │ │ │ │ ├── dtlb_mr_blk.v │ │ │ │ ├── dtlb_mr_sub.v │ │ │ │ ├── dtlb_tr_blk.v │ │ │ │ ├── dtlb_tr_sub.v │ │ │ │ ├── ic_ram_blk.v │ │ │ │ ├── ic_ram_sub.v │ │ │ │ ├── ic_tag_blk.v │ │ │ │ ├── ic_tag_sub.v │ │ │ │ ├── itlb_mr_blk.v │ │ │ │ ├── itlb_mr_sub.v │ │ │ │ ├── itlb_tr_blk.v │ │ │ │ ├── itlb_tr_sub.v │ │ │ │ ├── rf_dist_model.v │ │ │ │ ├── rf_dist_xil.v │ │ │ │ └── rf_sub.v │ │ └── timescale.v │ │ └── syneda │ │ └── or1200_top.esp └── simple_examples │ ├── .gitignore │ ├── bundles.fl │ ├── ex1.fl │ ├── example.fl │ ├── ffs.fl │ ├── label_example.fl │ ├── medium.fl │ ├── small.fl │ └── tiny.fl ├── demos ├── I-Day2021_demos │ ├── v0 │ │ └── fl_as_implementation_and_scripting.fl │ ├── v1 │ │ └── fl_as_specification_lang.fl │ └── v2 │ │ ├── STE_in_VossII.fl │ │ ├── imp1.fl │ │ └── imp2.fl ├── intro.fl ├── miter.fl └── mod_mult.fl ├── doc ├── fl_guide.pdf ├── fl_plugins.md ├── fl_plugins.pdf ├── fl_tutorial │ ├── figs │ │ ├── forte_help.jpg │ │ ├── forte_start.jpg │ │ └── forte_with_args_start.jpg │ ├── fl_tutorial.css │ ├── index.html │ ├── tut_code │ │ ├── code_0001.jpg │ │ ├── code_0002.jpg │ │ ├── code_0003.jpg │ │ ├── code_0004.jpg │ │ ├── code_0005.jpg │ │ ├── code_0006.jpg │ │ ├── code_0007.jpg │ │ ├── code_0008.jpg │ │ ├── code_0009.jpg │ │ ├── code_0010.jpg │ │ ├── code_0011.jpg │ │ ├── code_0012.jpg │ │ ├── code_0013.jpg │ │ ├── code_0014.jpg │ │ ├── code_0015.jpg │ │ ├── code_0016.jpg │ │ ├── code_0017.jpg │ │ ├── code_0018.jpg │ │ ├── code_0019.jpg │ │ ├── code_0020.jpg │ │ ├── code_0021.jpg │ │ ├── code_0022.jpg │ │ ├── code_0023.jpg │ │ ├── code_0024.jpg │ │ ├── code_0025.jpg │ │ ├── code_0026.jpg │ │ └── code_0027.jpg │ └── tut_img │ │ ├── ste1.jpg │ │ └── ste2.jpg └── hfl_examples │ ├── 01_simple.fl │ ├── 02_example.fl │ ├── 03_example.fl │ ├── 04_example.fl │ ├── 05_example.fl │ ├── 06_example.fl │ ├── 07_example.fl │ └── 08_example.fl ├── isomatches ├── 767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60.pex ├── 767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60.match └── matches ├── modes ├── emacs │ ├── README.md │ └── fl-mode.el ├── vim │ ├── README │ └── fl.vimrc └── visual studio code │ ├── README.md │ ├── vossii-fl-1.3.0.vsix │ └── vossii-fl │ ├── .gitignore │ ├── .vscode │ └── launch.json │ ├── CHANGELOG.md │ ├── README.md │ ├── bifrost-language-configuration.json │ ├── extension.js │ ├── fl-language-configuration.json │ ├── package.json │ └── syntaxes │ ├── bifrost.tmLanguage.json │ └── fl.tmLanguage.json ├── src ├── IDVII ├── Makefile ├── bifrost │ ├── BlockProgram.hs │ ├── Blockify.hs │ ├── CombOpt.hs │ ├── Compile.hs │ ├── ControlFlowCheck.hs │ ├── Decomplexify.hs │ ├── EnvCheck.hs │ ├── Environment.hs │ ├── Expression.hs │ ├── ExpressionExtra.hs │ ├── FLOut.hs │ ├── Finite.hs │ ├── FixSharedActions.hs │ ├── Graph.hs │ ├── Hardware.hs │ ├── KitchenSink.hs │ ├── Lang.cf │ ├── Lang │ │ ├── AbsLang.hs │ │ ├── DocLang.txt │ │ ├── ErrM.hs │ │ ├── LexLang.hs │ │ ├── ParLang.hs │ │ ├── PrintLang.hs │ │ ├── SkelLang.hs │ │ └── TestLang.hs │ ├── Liveness.hs │ ├── Main.hs │ ├── Makefile │ ├── Message.hs │ ├── Plan.hs │ ├── Preprocessor.hs │ ├── PrettyPrint.hs │ ├── Properties.hs │ ├── Protocol.hs │ ├── README │ ├── ReadAST.hs │ ├── RefCheck.hs │ ├── StrUtil.hs │ ├── StructuredProgram.hs │ ├── SyncProgram.hs │ ├── TODO.txt │ ├── Typecheck.hs │ ├── TypecheckStructuredProgram.hs │ ├── Types.hs │ ├── Unshare.hs │ ├── WireNames.hs │ ├── doc │ │ ├── hardware.md │ │ ├── semantics.tex │ │ └── semantics_20220224.png │ ├── grammar_generators │ │ └── expgrammar.hs │ ├── hfl │ │ └── bifrost_hfl.fl │ └── modes │ │ └── emacs │ │ └── bifrost.el ├── bin │ ├── fl │ │ ├── .gdbinit │ │ ├── DEBUG_VISUALIZATION │ │ ├── ENV │ │ ├── FL │ │ ├── Makefile │ │ ├── REGRESS │ │ ├── TST │ │ ├── TST2 │ │ ├── arb_prec.c │ │ ├── arb_prec.h │ │ ├── bev.c │ │ ├── bev.h │ │ ├── bexpr.c │ │ ├── bexpr.h │ │ ├── bugs │ │ │ ├── LoGAN_test_mini.fl │ │ │ ├── M65C02 │ │ │ │ ├── ClkGen.xaw │ │ │ │ ├── M65C02.tcl │ │ │ │ ├── M65C02.ucf │ │ │ │ ├── M65C02.v │ │ │ │ ├── M65C02_ALU.v │ │ │ │ ├── M65C02_AddrGen.v │ │ │ │ ├── M65C02_BCD.v │ │ │ │ ├── M65C02_BIN.v │ │ │ │ ├── M65C02_Base.ucf │ │ │ │ ├── M65C02_Base.v │ │ │ │ ├── M65C02_ClkGen.v │ │ │ │ ├── M65C02_Core.ucf │ │ │ │ ├── M65C02_Core.v │ │ │ │ ├── M65C02_Decoder_ROM.coe │ │ │ │ ├── M65C02_IntHndlr.v │ │ │ │ ├── M65C02_MPC.v │ │ │ │ ├── M65C02_MPCv3.v │ │ │ │ ├── M65C02_MPCv4.v │ │ │ │ ├── M65C02_RAM.txt │ │ │ │ ├── M65C02_RAM.v │ │ │ │ ├── M65C02_uPgm_V3a.coe │ │ │ │ ├── README │ │ │ │ └── fedet.v │ │ │ ├── OfficialSpeedLimit70.xpm │ │ │ ├── SP_FPU.v │ │ │ ├── SpeedLimit70.xpm │ │ │ ├── b0.fl │ │ │ ├── b1.fl │ │ │ ├── b10.fl │ │ │ ├── b100.fl │ │ │ ├── b101.fl │ │ │ ├── b102.fl │ │ │ ├── b103.fl │ │ │ ├── b104.fl │ │ │ ├── b105.fl │ │ │ ├── b106.fl │ │ │ ├── b107.fl │ │ │ ├── b108.fl │ │ │ ├── b109.fl │ │ │ ├── b11.fl │ │ │ ├── b110.fl │ │ │ ├── b111.fl │ │ │ ├── b112.fl │ │ │ ├── b113.fl │ │ │ ├── b114.fl │ │ │ ├── b115.fl │ │ │ ├── b116.fl │ │ │ ├── b117.fl │ │ │ ├── b118.fl │ │ │ ├── b119.fl │ │ │ ├── b12.fl │ │ │ ├── b120.fl │ │ │ ├── b121.fl │ │ │ ├── b122.fl │ │ │ ├── b123.fl │ │ │ ├── b124.fl │ │ │ ├── b125.fl │ │ │ ├── b126.fl │ │ │ ├── b127.fl │ │ │ ├── b128.fl │ │ │ ├── b129.fl │ │ │ ├── b13.fl │ │ │ ├── b130.fl │ │ │ ├── b131.fl │ │ │ ├── b132.fl │ │ │ ├── b133.fl │ │ │ ├── b134.fl │ │ │ ├── b135.fl │ │ │ ├── b136.fl │ │ │ ├── b137.fl │ │ │ ├── b138.fl │ │ │ ├── b139.fl │ │ │ ├── b14.fl │ │ │ ├── b140.bexpr │ │ │ ├── b140.fl │ │ │ ├── b141.fl │ │ │ ├── b142.fl │ │ │ ├── b143.fl │ │ │ ├── b144.fl │ │ │ ├── b145.fl │ │ │ ├── b146.fl │ │ │ ├── b147.fl │ │ │ ├── b148.fl │ │ │ ├── b149.fl │ │ │ ├── b15.fl │ │ │ ├── b150.fl │ │ │ ├── b151.fl │ │ │ ├── b152.fl │ │ │ ├── b153.fl │ │ │ ├── b154.fl │ │ │ ├── b155.fl │ │ │ ├── b156.fl │ │ │ ├── b157.fl │ │ │ ├── b158.fl │ │ │ ├── b159.fl │ │ │ ├── b16.fl │ │ │ ├── b160.fl │ │ │ ├── b161.fl │ │ │ ├── b162.fl │ │ │ ├── b163.fl │ │ │ ├── b164.fl │ │ │ ├── b165.fl │ │ │ ├── b166.fl │ │ │ ├── b167.fl │ │ │ ├── b167_verilog_examples │ │ │ │ ├── small.v │ │ │ │ └── small_lib.v │ │ │ ├── b168.fl │ │ │ ├── b169.fl │ │ │ ├── b17.fl │ │ │ ├── b170.fl │ │ │ ├── b170.tcl │ │ │ ├── b171.fl │ │ │ ├── b172.fl │ │ │ ├── b173.fl │ │ │ ├── b174.fl │ │ │ ├── b175.fl │ │ │ ├── b176.fl │ │ │ ├── b177.fl │ │ │ ├── b178.fl │ │ │ ├── b179.fl │ │ │ ├── b18.fl │ │ │ ├── b180.fl │ │ │ ├── b181.tcl │ │ │ ├── b182.fl │ │ │ ├── b183.fl │ │ │ ├── b184.fl │ │ │ ├── b185.fl │ │ │ ├── b186.fl │ │ │ ├── b187.fl │ │ │ ├── b188.fl │ │ │ ├── b189.fl │ │ │ ├── b19.fl │ │ │ ├── b190.fl │ │ │ ├── b191.fl │ │ │ ├── b192.fl │ │ │ ├── b193.fl │ │ │ ├── b194.fl │ │ │ ├── b195.fl │ │ │ ├── b196.fl │ │ │ ├── b197.fl │ │ │ ├── b198.fl │ │ │ ├── b199.fl │ │ │ ├── b1bdd.fl │ │ │ ├── b2.fl │ │ │ ├── b20.fl │ │ │ ├── b200.fl │ │ │ ├── b201.fl │ │ │ ├── b201_verilog │ │ │ │ └── memory.v │ │ │ ├── b202.fl │ │ │ ├── b203.fl │ │ │ ├── b204.fl │ │ │ ├── b205.fl │ │ │ ├── b206.fl │ │ │ ├── b207.fl │ │ │ ├── b208.fl │ │ │ ├── b209.fl │ │ │ ├── b21.fl │ │ │ ├── b210.fl │ │ │ ├── b211.fl │ │ │ ├── b212.fl │ │ │ ├── b213.fl │ │ │ ├── b214.fl │ │ │ ├── b215.fl │ │ │ ├── b216.fl │ │ │ ├── b217.fl │ │ │ ├── b218.fl │ │ │ ├── b219.fl │ │ │ ├── b22.fl │ │ │ ├── b220.fl │ │ │ ├── b221.fl │ │ │ ├── b222.fl │ │ │ ├── b222.v │ │ │ ├── b223.fl │ │ │ ├── b224.fl │ │ │ ├── b225.fl │ │ │ ├── b226.fl │ │ │ ├── b227.fl │ │ │ ├── b228.fl │ │ │ ├── b229.fl │ │ │ ├── b23.fl │ │ │ ├── b230.fl │ │ │ ├── b231.fl │ │ │ ├── b232.fl │ │ │ ├── b233.fl │ │ │ ├── b234.fl │ │ │ ├── b235.fl │ │ │ ├── b236.fl │ │ │ ├── b237.fl │ │ │ ├── b238.fl │ │ │ ├── b239.fl │ │ │ ├── b24.fl │ │ │ ├── b240.fl │ │ │ ├── b241.fl │ │ │ ├── b242.fl │ │ │ ├── b243.fl │ │ │ ├── b244.fl │ │ │ ├── b245.fl │ │ │ ├── b246.fl │ │ │ ├── b247.fl │ │ │ ├── b248.fl │ │ │ ├── b249.fl │ │ │ ├── b25.fl │ │ │ ├── b250.fl │ │ │ ├── b251.fl │ │ │ ├── b252.fl │ │ │ ├── b253.fl │ │ │ ├── b254.fl │ │ │ ├── b255.fl │ │ │ ├── b256.fl │ │ │ ├── b257.fl │ │ │ ├── b258.fl │ │ │ ├── b259.fl │ │ │ ├── b26.fl │ │ │ ├── b260.fl │ │ │ ├── b261.fl │ │ │ ├── b27.fl │ │ │ ├── b28.fl │ │ │ ├── b29.fl │ │ │ ├── b3.fl │ │ │ ├── b30.fl │ │ │ ├── b31.fl │ │ │ ├── b32.fl │ │ │ ├── b33.fl │ │ │ ├── b34.fl │ │ │ ├── b35.fl │ │ │ ├── b36.fl │ │ │ ├── b37.fl │ │ │ ├── b38.fl │ │ │ ├── b39.fl │ │ │ ├── b4.fl │ │ │ ├── b40.fl │ │ │ ├── b41.fl │ │ │ ├── b42.fl │ │ │ ├── b43.fl │ │ │ ├── b43.model │ │ │ ├── b44.fl │ │ │ ├── b45.fl │ │ │ ├── b46.fl │ │ │ ├── b47.fl │ │ │ ├── b48.fl │ │ │ ├── b49.fl │ │ │ ├── b5.fl │ │ │ ├── b50.fl │ │ │ ├── b51.fl │ │ │ ├── b52.fl │ │ │ ├── b53.fl │ │ │ ├── b54.fl │ │ │ ├── b55.fl │ │ │ ├── b56.fl │ │ │ ├── b57.fl │ │ │ ├── b58.fl │ │ │ ├── b59.fl │ │ │ ├── b6.fl │ │ │ ├── b60.fl │ │ │ ├── b61.fl │ │ │ ├── b62.fl │ │ │ ├── b63.fl │ │ │ ├── b64.fl │ │ │ ├── b65.fl │ │ │ ├── b66.fl │ │ │ ├── b67.fl │ │ │ ├── b68.fl │ │ │ ├── b69.fl │ │ │ ├── b7.fl │ │ │ ├── b70.fl │ │ │ ├── b71.fl │ │ │ ├── b72.fl │ │ │ ├── b73.fl │ │ │ ├── b74.fl │ │ │ ├── b75.fl │ │ │ ├── b76.fl │ │ │ ├── b77.fl │ │ │ ├── b78.fl │ │ │ ├── b79.fl │ │ │ ├── b79b.fl │ │ │ ├── b8.fl │ │ │ ├── b80.fl │ │ │ ├── b81.fl │ │ │ ├── b82.fl │ │ │ ├── b83.fl │ │ │ ├── b84.fl │ │ │ ├── b85.fl │ │ │ ├── b86.fl │ │ │ ├── b87.fl │ │ │ ├── b88.fl │ │ │ ├── b89.fl │ │ │ ├── b9.fl │ │ │ ├── b90.fl │ │ │ ├── b91.fl │ │ │ ├── b92.fl │ │ │ ├── b93.fl │ │ │ ├── b94.fl │ │ │ ├── b95.fl │ │ │ ├── b96.fl │ │ │ ├── b97.fl │ │ │ ├── b98.fl │ │ │ ├── b99.fl │ │ │ ├── ex1.jpg │ │ │ ├── ex1.xpm │ │ │ ├── ex_70_01.xpm │ │ │ ├── m6502 │ │ │ │ ├── M65C02.v │ │ │ │ ├── M65C02_ALU.v │ │ │ │ ├── M65C02_AddrGen.v │ │ │ │ ├── M65C02_BCD.v │ │ │ │ ├── M65C02_BIN.v │ │ │ │ ├── M65C02_Base.v │ │ │ │ ├── M65C02_ClkGen.v │ │ │ │ ├── M65C02_Core.v │ │ │ │ ├── M65C02_IntHndlr.v │ │ │ │ ├── M65C02_MPC.v │ │ │ │ ├── M65C02_MPCv3.v │ │ │ │ ├── M65C02_MPCv4.v │ │ │ │ ├── M65C02_RAM.v │ │ │ │ └── fedet.v │ │ │ ├── mux2.v │ │ │ ├── mux4.v │ │ │ ├── output.blif │ │ │ ├── output.del │ │ │ ├── output.exe │ │ │ ├── small.xpm │ │ │ ├── test_verilog_Db3Qb7 │ │ │ │ ├── _out.fl │ │ │ │ ├── script.ys │ │ │ │ ├── test.v │ │ │ │ └── yosys.log │ │ │ ├── z.blif │ │ │ ├── z.del │ │ │ └── z.exe │ │ ├── builtins.fl │ │ ├── bv.c │ │ ├── bv.h │ │ ├── cache.c │ │ ├── cache.h │ │ ├── ccc.fl │ │ ├── compile.c │ │ ├── compile.h │ │ ├── debug.c │ │ ├── debug.h │ │ ├── debug.tcl │ │ ├── doc.c │ │ ├── doc.h │ │ ├── draw_graph.c │ │ ├── draw_graph.h │ │ ├── emit.c │ │ ├── emit.h │ │ ├── error.c │ │ ├── error.h │ │ ├── expand_cursor.c │ │ ├── expand_cursor.h │ │ ├── file_ops.c │ │ ├── file_ops.h │ │ ├── find_undoc_funs.fl │ │ ├── fl.c │ │ ├── fl.h │ │ ├── float.c │ │ ├── float.h │ │ ├── front_end.tcl │ │ ├── fsm.c │ │ ├── fsm.h │ │ ├── g │ │ ├── get_decl.awk │ │ ├── gg │ │ ├── graph.c │ │ ├── graph.h │ │ ├── image.c │ │ ├── image.h │ │ ├── initialize.c │ │ ├── initialize.h │ │ ├── int_ops.c │ │ ├── int_ops.h │ │ ├── io.c │ │ ├── io.h │ │ ├── iso.c │ │ ├── iso.h │ │ ├── l_idea │ │ ├── language.h │ │ ├── language.y │ │ ├── lexer │ │ ├── list_ops.c │ │ ├── list_ops.h │ │ ├── lp.c │ │ ├── lp.h │ │ ├── main.cc │ │ ├── make_prefs.tcl │ │ ├── memoize.c │ │ ├── memoize.h │ │ ├── minisat_ifc.cc │ │ ├── minisat_ifc.h │ │ ├── new_bdd.c │ │ ├── new_bdd.h │ │ ├── pexlif.c │ │ ├── pexlif.h │ │ ├── plugin.c │ │ ├── plugin.h │ │ ├── plugin_checker.c │ │ ├── plugin_errlog.c │ │ ├── plugin_errlog.h │ │ ├── plugin_loader.c │ │ ├── plugin_loader.h │ │ ├── preamble.fl │ │ ├── prefs.tcl │ │ ├── q │ │ ├── q.fl │ │ ├── q3.fl │ │ ├── qtcl │ │ ├── qtcl2 │ │ ├── remote_tcl.c │ │ ├── remote_tcl.h │ │ ├── scripts │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ └── mk_serialize.awk │ │ ├── serialize.c │ │ ├── serialize.h │ │ ├── sha256.c │ │ ├── sha256.h │ │ ├── symbol.c │ │ ├── symbol.h │ │ ├── symbol_tbl.c │ │ ├── symbol_tbl.h │ │ ├── system.c │ │ ├── system.h │ │ ├── table.c │ │ ├── table.h │ │ ├── tcl_debug │ │ ├── test_library.fl │ │ ├── trace_out │ │ ├── typecheck.c │ │ ├── typecheck.h │ │ ├── u_idea │ │ ├── utils.tcl │ │ ├── voss_strings.c │ │ ├── voss_strings.h │ │ ├── w │ │ ├── w2 │ │ ├── x │ │ ├── x.fl │ │ ├── x.tcl │ │ └── xx.tcl │ ├── functor │ │ ├── Makefile │ │ ├── lexer │ │ └── tst │ ├── ignore_signals │ │ ├── Makefile │ │ └── ignore_signals.c │ └── yaccfl │ │ └── new_yaccfl.fl ├── doc │ ├── README_release.md │ ├── fl │ │ ├── .gitignore │ │ ├── 02_fl.pre_tex │ │ ├── 03_bv.pre_tex │ │ ├── 04_hfl.pre_tex │ │ ├── 05_ste.pre_tex │ │ ├── 06_fl-syntax.pre_tex │ │ ├── 16_biblio.pre_tex │ │ ├── Makefile │ │ ├── code │ │ │ ├── code_0001.fl │ │ │ ├── code_0001.jpg │ │ │ ├── code_0002.fl │ │ │ ├── code_0002.jpg │ │ │ ├── code_0003.fl │ │ │ ├── code_0003.jpg │ │ │ ├── code_0004.fl │ │ │ ├── code_0004.jpg │ │ │ ├── code_0005.fl │ │ │ ├── code_0005.jpg │ │ │ ├── code_0006.fl │ │ │ ├── code_0006.jpg │ │ │ ├── code_0007.fl │ │ │ ├── code_0007.jpg │ │ │ ├── code_0008.fl │ │ │ ├── code_0008.jpg │ │ │ ├── code_0009.fl │ │ │ ├── code_0009.jpg │ │ │ ├── code_0010.fl │ │ │ ├── code_0010.jpg │ │ │ ├── code_0011.fl │ │ │ ├── code_0011.jpg │ │ │ ├── code_0012.fl │ │ │ ├── code_0012.jpg │ │ │ ├── code_0013.fl │ │ │ ├── code_0013.jpg │ │ │ ├── code_0014.fl │ │ │ ├── code_0014.jpg │ │ │ ├── code_0015.fl │ │ │ ├── code_0015.jpg │ │ │ ├── code_0016.fl │ │ │ ├── code_0016.jpg │ │ │ ├── code_0017.fl │ │ │ ├── code_0017.jpg │ │ │ ├── code_0018.fl │ │ │ ├── code_0018.jpg │ │ │ ├── code_0019.fl │ │ │ ├── code_0019.jpg │ │ │ ├── code_0020.fl │ │ │ ├── code_0020.jpg │ │ │ ├── code_0021.fl │ │ │ ├── code_0021.jpg │ │ │ ├── code_0022.fl │ │ │ ├── code_0022.jpg │ │ │ ├── code_0023.fl │ │ │ ├── code_0023.jpg │ │ │ ├── code_0024.fl │ │ │ ├── code_0024.jpg │ │ │ ├── code_0025.fl │ │ │ ├── code_0025.jpg │ │ │ ├── code_0026.fl │ │ │ ├── code_0026.jpg │ │ │ ├── code_0027.fl │ │ │ ├── code_0027.jpg │ │ │ ├── code_0028.fl │ │ │ ├── code_0028.jpg │ │ │ ├── code_0029.fl │ │ │ ├── code_0029.jpg │ │ │ ├── code_0030.fl │ │ │ ├── code_0030.jpg │ │ │ ├── code_0031.fl │ │ │ ├── code_0031.jpg │ │ │ ├── code_0032.fl │ │ │ ├── code_0032.jpg │ │ │ ├── code_0033.fl │ │ │ ├── code_0033.jpg │ │ │ ├── code_0034.fl │ │ │ ├── code_0034.jpg │ │ │ ├── code_0035.fl │ │ │ ├── code_0035.jpg │ │ │ ├── code_0036.fl │ │ │ ├── code_0036.jpg │ │ │ ├── code_0037.fl │ │ │ ├── code_0037.jpg │ │ │ ├── code_0038.fl │ │ │ ├── code_0038.jpg │ │ │ ├── code_0039.fl │ │ │ ├── code_0039.jpg │ │ │ ├── code_0040.fl │ │ │ ├── code_0040.jpg │ │ │ ├── code_0041.fl │ │ │ ├── code_0041.jpg │ │ │ ├── code_0042.fl │ │ │ ├── code_0042.jpg │ │ │ ├── code_0043.fl │ │ │ ├── code_0043.jpg │ │ │ ├── code_0044.fl │ │ │ ├── code_0044.jpg │ │ │ ├── code_0045.fl │ │ │ ├── code_0045.jpg │ │ │ ├── code_0046.fl │ │ │ ├── code_0046.jpg │ │ │ ├── code_0047.fl │ │ │ ├── code_0047.jpg │ │ │ ├── code_0048.fl │ │ │ ├── code_0048.jpg │ │ │ ├── code_0049.fl │ │ │ ├── code_0049.jpg │ │ │ ├── code_0050.fl │ │ │ ├── code_0050.jpg │ │ │ ├── code_0051.fl │ │ │ ├── code_0051.jpg │ │ │ ├── code_0052.fl │ │ │ ├── code_0052.jpg │ │ │ ├── code_0053.fl │ │ │ ├── code_0053.jpg │ │ │ ├── code_0054.fl │ │ │ ├── code_0054.jpg │ │ │ ├── code_0055.fl │ │ │ ├── code_0055.jpg │ │ │ ├── code_0056.fl │ │ │ ├── code_0056.jpg │ │ │ ├── code_0057.fl │ │ │ ├── code_0057.jpg │ │ │ ├── code_0058.fl │ │ │ ├── code_0058.jpg │ │ │ ├── code_0059.fl │ │ │ ├── code_0059.jpg │ │ │ ├── code_0060.fl │ │ │ ├── code_0060.jpg │ │ │ ├── code_0061.fl │ │ │ ├── code_0061.jpg │ │ │ ├── code_0062.fl │ │ │ ├── code_0062.jpg │ │ │ ├── code_0063.fl │ │ │ ├── code_0063.jpg │ │ │ ├── code_0064.fl │ │ │ ├── code_0064.jpg │ │ │ ├── code_0065.fl │ │ │ ├── code_0065.jpg │ │ │ ├── code_0066.fl │ │ │ ├── code_0066.jpg │ │ │ ├── code_0067.fl │ │ │ ├── code_0067.jpg │ │ │ ├── code_0068.fl │ │ │ ├── code_0068.jpg │ │ │ ├── code_0069.fl │ │ │ ├── code_0069.jpg │ │ │ ├── code_0070.fl │ │ │ ├── code_0070.jpg │ │ │ ├── code_0071.fl │ │ │ ├── code_0071.jpg │ │ │ ├── code_0072.fl │ │ │ ├── code_0072.jpg │ │ │ ├── code_0073.fl │ │ │ ├── code_0073.jpg │ │ │ ├── code_0074.fl │ │ │ ├── code_0074.jpg │ │ │ ├── code_0075.fl │ │ │ ├── code_0075.jpg │ │ │ ├── code_0076.fl │ │ │ ├── code_0076.jpg │ │ │ ├── code_0077.fl │ │ │ ├── code_0077.jpg │ │ │ ├── code_0078.fl │ │ │ ├── code_0078.jpg │ │ │ ├── code_0079.fl │ │ │ ├── code_0079.jpg │ │ │ ├── code_0080.fl │ │ │ ├── code_0080.jpg │ │ │ ├── code_0081.fl │ │ │ ├── code_0081.jpg │ │ │ ├── code_0082.fl │ │ │ ├── code_0082.jpg │ │ │ ├── code_0083.fl │ │ │ ├── code_0083.jpg │ │ │ ├── code_0084.fl │ │ │ ├── code_0084.jpg │ │ │ ├── code_0085.fl │ │ │ ├── code_0085.jpg │ │ │ ├── code_0086.fl │ │ │ ├── code_0086.jpg │ │ │ ├── code_0087.fl │ │ │ ├── code_0087.jpg │ │ │ ├── code_0088.fl │ │ │ ├── code_0088.jpg │ │ │ ├── code_0089.fl │ │ │ ├── code_0089.jpg │ │ │ ├── code_0090.fl │ │ │ ├── code_0090.jpg │ │ │ ├── code_0091.fl │ │ │ ├── code_0091.jpg │ │ │ ├── code_0092.fl │ │ │ ├── code_0092.jpg │ │ │ ├── code_0093.fl │ │ │ ├── code_0093.jpg │ │ │ ├── code_0094.fl │ │ │ ├── code_0094.jpg │ │ │ ├── code_0095.fl │ │ │ ├── code_0095.jpg │ │ │ ├── code_0096.fl │ │ │ ├── code_0096.jpg │ │ │ ├── code_0097.fl │ │ │ ├── code_0097.jpg │ │ │ ├── code_0098.fl │ │ │ ├── code_0098.jpg │ │ │ ├── code_0099.fl │ │ │ ├── code_0099.jpg │ │ │ ├── code_0100.fl │ │ │ ├── code_0100.jpg │ │ │ ├── code_0101.fl │ │ │ ├── code_0101.jpg │ │ │ ├── code_0102.fl │ │ │ ├── code_0102.jpg │ │ │ ├── code_0103.fl │ │ │ ├── code_0103.jpg │ │ │ ├── code_0104.fl │ │ │ ├── code_0104.jpg │ │ │ ├── code_0105.fl │ │ │ ├── code_0105.jpg │ │ │ ├── code_0106.fl │ │ │ ├── code_0106.jpg │ │ │ ├── code_0107.fl │ │ │ ├── code_0107.jpg │ │ │ ├── code_0108.fl │ │ │ ├── code_0108.jpg │ │ │ ├── code_0109.fl │ │ │ ├── code_0109.jpg │ │ │ ├── code_0110.fl │ │ │ ├── code_0110.jpg │ │ │ ├── code_0111.fl │ │ │ ├── code_0111.jpg │ │ │ ├── code_0112.fl │ │ │ ├── code_0112.jpg │ │ │ ├── code_0113.fl │ │ │ ├── code_0113.jpg │ │ │ ├── code_0114.fl │ │ │ ├── code_0114.jpg │ │ │ ├── code_0115.fl │ │ │ ├── code_0115.jpg │ │ │ ├── code_0116.fl │ │ │ ├── code_0116.jpg │ │ │ ├── code_0117.fl │ │ │ ├── code_0117.jpg │ │ │ ├── code_0118.fl │ │ │ ├── code_0118.jpg │ │ │ ├── code_0119.fl │ │ │ └── code_0119.jpg │ │ ├── defs.tex │ │ ├── figs │ │ │ ├── forte_help.jpg │ │ │ ├── forte_start.jpg │ │ │ └── forte_with_args_start.jpg │ │ ├── fl_guide.idx2 │ │ ├── fl_guide.ilg │ │ ├── fl_guide.out │ │ ├── fl_guide.pdf │ │ ├── fl_guide.pre_tex │ │ ├── fl_tutorial.css │ │ ├── fl_tutorial.html │ │ ├── fl_tutorial.md │ │ ├── fl_tutorial_template.html │ │ ├── fl_tutorial_tmp.html │ │ ├── fl_tutorial_tmp.md │ │ ├── full_window_capture │ │ ├── full_window_capture.fl │ │ ├── full_window_capture.tcl │ │ ├── glossary.pre_tex │ │ ├── hello.fl │ │ ├── hol_macros.tex │ │ ├── my_index_style │ │ ├── pre_process.awk │ │ ├── qq │ │ ├── screen_capture │ │ ├── screen_capture.fl │ │ ├── screen_capture.tcl │ │ ├── screen_shots │ │ │ ├── bdd_big.png │ │ │ ├── bdd_small.png │ │ │ ├── fac_calc.png │ │ │ ├── front_page.png │ │ │ ├── go_on.png │ │ │ ├── gui │ │ │ │ ├── session_1 │ │ │ │ │ ├── gui_000001.png │ │ │ │ │ ├── gui_000002.png │ │ │ │ │ ├── gui_000003.png │ │ │ │ │ ├── gui_000004.png │ │ │ │ │ ├── gui_000005.png │ │ │ │ │ ├── gui_000006.png │ │ │ │ │ ├── gui_000007.png │ │ │ │ │ ├── gui_000008.png │ │ │ │ │ ├── gui_000009.png │ │ │ │ │ ├── gui_000010.png │ │ │ │ │ ├── gui_000011.png │ │ │ │ │ ├── gui_000012.png │ │ │ │ │ ├── gui_000013.png │ │ │ │ │ ├── gui_000014.png │ │ │ │ │ ├── gui_000015.png │ │ │ │ │ └── gui_000016.png │ │ │ │ ├── session_2 │ │ │ │ │ ├── gui_000001.png │ │ │ │ │ ├── gui_000002.png │ │ │ │ │ ├── gui_000003.png │ │ │ │ │ ├── gui_000004.png │ │ │ │ │ ├── gui_000005.png │ │ │ │ │ ├── gui_000006.png │ │ │ │ │ └── gui_000007.png │ │ │ │ └── session_3 │ │ │ │ │ ├── gui_000001.png │ │ │ │ │ ├── gui_000002.png │ │ │ │ │ ├── gui_000003.png │ │ │ │ │ ├── gui_000004.png │ │ │ │ │ ├── gui_000005.png │ │ │ │ │ ├── gui_000006.png │ │ │ │ │ ├── gui_000007.png │ │ │ │ │ ├── gui_000008.png │ │ │ │ │ ├── gui_000009.png │ │ │ │ │ ├── gui_000010.png │ │ │ │ │ └── gui_000011.png │ │ │ ├── gui_01.png │ │ │ ├── gui_02.png │ │ │ ├── gui_03.png │ │ │ ├── gui_04.png │ │ │ └── wip_gui │ │ │ │ └── capture.awk │ │ ├── tut_code │ │ │ ├── code_0001.fl │ │ │ ├── code_0001.jpg │ │ │ ├── code_0002.fl │ │ │ ├── code_0002.jpg │ │ │ ├── code_0003.fl │ │ │ ├── code_0003.jpg │ │ │ ├── code_0004.fl │ │ │ ├── code_0004.jpg │ │ │ ├── code_0005.fl │ │ │ ├── code_0005.jpg │ │ │ ├── code_0006.fl │ │ │ ├── code_0006.jpg │ │ │ ├── code_0007.fl │ │ │ ├── code_0007.jpg │ │ │ ├── code_0008.fl │ │ │ ├── code_0008.jpg │ │ │ ├── code_0009.fl │ │ │ ├── code_0009.jpg │ │ │ ├── code_0010.fl │ │ │ ├── code_0010.jpg │ │ │ ├── code_0011.fl │ │ │ ├── code_0011.jpg │ │ │ ├── code_0012.fl │ │ │ ├── code_0012.jpg │ │ │ ├── code_0013.fl │ │ │ ├── code_0013.jpg │ │ │ ├── code_0014.fl │ │ │ ├── code_0014.jpg │ │ │ ├── code_0015.fl │ │ │ ├── code_0015.jpg │ │ │ ├── code_0016.fl │ │ │ ├── code_0016.jpg │ │ │ ├── code_0017.fl │ │ │ ├── code_0017.jpg │ │ │ ├── code_0018.fl │ │ │ ├── code_0018.jpg │ │ │ ├── code_0019.fl │ │ │ ├── code_0019.jpg │ │ │ ├── code_0020.fl │ │ │ ├── code_0020.jpg │ │ │ ├── code_0021.fl │ │ │ ├── code_0021.jpg │ │ │ ├── code_0022.fl │ │ │ ├── code_0022.jpg │ │ │ ├── code_0023.fl │ │ │ ├── code_0023.jpg │ │ │ ├── code_0024.fl │ │ │ ├── code_0024.jpg │ │ │ ├── code_0025.fl │ │ │ ├── code_0025.jpg │ │ │ ├── code_0026.fl │ │ │ ├── code_0026.jpg │ │ │ ├── code_0027.fl │ │ │ └── code_0027.jpg │ │ ├── tut_img │ │ │ ├── ste1.jpg │ │ │ └── ste2.jpg │ │ ├── tut_pre_process.awk │ │ └── verilog_examples │ │ │ ├── small.v │ │ │ └── small_lib.v │ ├── fl_plugins.md │ ├── hfl_examples │ │ ├── 01_simple.fl │ │ ├── 02_example.fl │ │ ├── 03_example.fl │ │ ├── 04_example.fl │ │ ├── 05_example.fl │ │ ├── 06_example.fl │ │ ├── 07_example.fl │ │ ├── 08_example.fl │ │ └── Makefile │ └── pexlif │ │ └── pexlif.txt ├── external │ ├── minisat-2.2.0 │ │ ├── LICENSE │ │ ├── README │ │ ├── core │ │ │ ├── Dimacs.h │ │ │ ├── Main.cc │ │ │ ├── Main.cc_TRY │ │ │ ├── Makefile │ │ │ ├── Solver.cc │ │ │ ├── Solver.h │ │ │ └── SolverTypes.h │ │ ├── doc │ │ │ └── ReleaseNotes-2.2.0.txt │ │ ├── mtl │ │ │ ├── Alg.h │ │ │ ├── Alloc.h │ │ │ ├── Heap.h │ │ │ ├── IntTypes.h │ │ │ ├── Map.h │ │ │ ├── Queue.h │ │ │ ├── Sort.h │ │ │ ├── Vec.h │ │ │ ├── XAlloc.h │ │ │ ├── config.mk │ │ │ └── template.mk │ │ ├── simp │ │ │ ├── Main.cc │ │ │ ├── Makefile │ │ │ ├── SimpSolver.cc │ │ │ └── SimpSolver.h │ │ └── utils │ │ │ ├── Makefile │ │ │ ├── Options.cc │ │ │ ├── Options.h │ │ │ ├── ParseUtils.h │ │ │ ├── System.cc │ │ │ └── System.h │ ├── minisat │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README │ │ ├── doc │ │ │ └── ReleaseNotes-2.2.0.txt │ │ └── minisat │ │ │ ├── core │ │ │ ├── Dimacs.h │ │ │ ├── Main.cc │ │ │ ├── Solver.cc │ │ │ ├── Solver.h │ │ │ └── SolverTypes.h │ │ │ ├── mtl │ │ │ ├── Alg.h │ │ │ ├── Alloc.h │ │ │ ├── Heap.h │ │ │ ├── IntMap.h │ │ │ ├── IntTypes.h │ │ │ ├── Map.h │ │ │ ├── Queue.h │ │ │ ├── Rnd.h │ │ │ ├── Sort.h │ │ │ ├── Vec.h │ │ │ └── XAlloc.h │ │ │ ├── simp │ │ │ ├── Main.cc │ │ │ ├── SimpSolver.cc │ │ │ └── SimpSolver.h │ │ │ └── utils │ │ │ ├── Options.cc │ │ │ ├── Options.h │ │ │ ├── ParseUtils.h │ │ │ ├── System.cc │ │ │ └── System.h │ ├── visualization │ │ ├── Makefile │ │ ├── list_util.c │ │ ├── list_util.h │ │ ├── place.c │ │ ├── place.h │ │ ├── place_bounds.c │ │ ├── place_bounds.h │ │ ├── sch_util.c │ │ ├── sch_util.h │ │ └── schematic_draw_module.c │ ├── yosys │ │ └── write_pexlif │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ └── write_pexlif.cc │ └── yosys_Voss_patches │ │ ├── backends │ │ └── pexlif │ │ │ ├── Makefile.inc │ │ │ └── pexlif.cc │ │ └── frontends │ │ └── ast │ │ └── genrtlil.cc ├── fl-hs-plugins │ ├── Makefile │ ├── Setup.hs │ ├── create-fl-plugin │ │ └── Main.hs │ ├── fl-plugins.cabal │ ├── src │ │ ├── Language │ │ │ └── FL │ │ │ │ ├── Plugin.hs │ │ │ │ └── Plugin │ │ │ │ ├── API.hs │ │ │ │ ├── API │ │ │ │ └── Type.hs │ │ │ │ ├── Exports.hs │ │ │ │ ├── Exports │ │ │ │ └── Types.hs │ │ │ │ ├── FlExport.hs │ │ │ │ ├── FlExport │ │ │ │ └── Instances.hs │ │ │ │ ├── FlPtr.hs │ │ │ │ ├── FlType.hs │ │ │ │ ├── FlType │ │ │ │ ├── FunctionInstances.hs │ │ │ │ ├── Instances.hs │ │ │ │ └── TupleInstances.hs │ │ │ │ ├── Foreign.hsc │ │ │ │ ├── Foreign │ │ │ │ ├── TypeHooks.hs │ │ │ │ └── Types.hs │ │ │ │ ├── Internal.hs │ │ │ │ └── TypeDict.hs │ │ └── hsbracket.c │ └── templates │ │ ├── Makefile.mustache │ │ ├── cabal.mustache │ │ ├── hsbracket.mustache │ │ └── main.mustache ├── include │ ├── alloc.h │ ├── buf.h │ ├── generation_hash.h │ ├── hash.h │ ├── morestr.h │ ├── readrc.h │ ├── rec.h │ ├── strmgr.h │ ├── timer.h │ ├── types.h │ └── uniq_buf.h ├── lib │ ├── HP_time │ ├── Makefile │ ├── alloc.c │ ├── buf.c │ ├── generation_hash.c │ ├── hash.c │ ├── morestr.c │ ├── readrc.c │ ├── rec.c │ ├── strmgr.c │ ├── timer.c │ └── uniq_buf.c ├── license_template ├── scripts │ └── fl └── vosslib │ ├── bexpr_arithm.fl │ ├── bexpr_u_arithm.fl │ ├── bool_arithm.fl │ ├── bool_u_arithm.fl │ ├── gen_arithm.fl │ ├── gen_u_arithm.fl │ ├── graph_viz.fl │ ├── idv.fl │ ├── osu018_stdcells.fl │ ├── pretty.fl │ ├── rationals.fl │ ├── smt.fl │ ├── ste.fl │ ├── symbolic_lists.fl │ ├── synth_load_file.fl │ ├── unary.fl │ ├── vector_names.fl │ └── wste.fl └── tutorials ├── August_24_2020 ├── session_1 │ ├── 1_intro.fl │ ├── 2_bool.fl │ ├── 3_constant.fl │ ├── 4_geometry.fl │ ├── canvas_help_functions.fl │ └── visualize.tcl ├── session_2 │ ├── 1_pexlif.fl │ ├── 2_verilog.fl │ ├── 3_ste.fl │ ├── 4_func_verif.fl │ ├── 5_rel_verif.fl │ ├── M65C02 │ │ ├── ClkGen.xaw │ │ ├── M65C02.tcl │ │ ├── M65C02.ucf │ │ ├── M65C02.v │ │ ├── M65C02_ALU.v │ │ ├── M65C02_AddrGen.v │ │ ├── M65C02_BCD.v │ │ ├── M65C02_BIN.v │ │ ├── M65C02_Base.ucf │ │ ├── M65C02_Base.v │ │ ├── M65C02_ClkGen.v │ │ ├── M65C02_Core.ucf │ │ ├── M65C02_Core.v │ │ ├── M65C02_Decoder_ROM.coe │ │ ├── M65C02_IntHndlr.v │ │ ├── M65C02_MPC.v │ │ ├── M65C02_MPCv3.v │ │ ├── M65C02_MPCv4.v │ │ ├── M65C02_RAM.txt │ │ ├── M65C02_RAM.v │ │ ├── M65C02_uPgm_V3a.coe │ │ ├── README │ │ └── fedet.v │ ├── diff_cache │ │ ├── cam_example.fl │ │ ├── diff_cache.fl │ │ ├── diffcache_constants.fl │ │ └── diffstate.fl │ └── or1200_hp │ │ ├── dc_ram_blk.v │ │ ├── dc_ram_sub.v │ │ ├── dc_tag_blk.v │ │ ├── dc_tag_sub.v │ │ ├── dtlb_mr_blk.v │ │ ├── dtlb_mr_sub.v │ │ ├── dtlb_tr_blk.v │ │ ├── dtlb_tr_sub.v │ │ ├── ic_ram_blk.v │ │ ├── ic_ram_sub.v │ │ ├── ic_tag_blk.v │ │ ├── ic_tag_sub.v │ │ ├── itlb_mr_blk.v │ │ ├── itlb_mr_sub.v │ │ ├── itlb_tr_blk.v │ │ ├── itlb_tr_sub.v │ │ ├── or1200_alu.v │ │ ├── or1200_cfgr.v │ │ ├── or1200_cpu.v │ │ ├── or1200_ctrl.v │ │ ├── or1200_dc_fsm.v │ │ ├── or1200_dc_ram.v │ │ ├── or1200_dc_tag.v │ │ ├── or1200_dc_top.v │ │ ├── or1200_defines.v │ │ ├── or1200_dmmu_tlb.v │ │ ├── or1200_dmmu_top.v │ │ ├── or1200_du.v │ │ ├── or1200_except.v │ │ ├── or1200_freeze.v │ │ ├── or1200_genpc.v │ │ ├── or1200_gmultp2_32x32.v │ │ ├── or1200_ic_fsm.v │ │ ├── or1200_ic_ram.v │ │ ├── or1200_ic_tag.v │ │ ├── or1200_ic_top.v │ │ ├── or1200_if.v │ │ ├── or1200_immu_tlb.v │ │ ├── or1200_immu_top.v │ │ ├── or1200_iwb_biu.v │ │ ├── or1200_lsu.v │ │ ├── or1200_mem2reg.v │ │ ├── or1200_mult_mac.v │ │ ├── or1200_operandmuxes.v │ │ ├── or1200_pic.v │ │ ├── or1200_pm.v │ │ ├── or1200_qmem_top.v │ │ ├── or1200_reg2mem.v │ │ ├── or1200_rf.v │ │ ├── or1200_sb.v │ │ ├── or1200_sprs.v │ │ ├── or1200_top.fl │ │ ├── or1200_top.v │ │ ├── or1200_tt.v │ │ ├── or1200_wb_biu.v │ │ ├── or1200_wbmux.v │ │ ├── rf_dist_model.v │ │ ├── rf_dist_xil.v │ │ └── rf_sub.v └── session_3 │ ├── 1_simple_ifc.fl │ ├── 1_simple_ifc_v2.fl │ ├── 2_simple_pipeline_v0.fl │ ├── 3_simple_pipeline_capacity.fl │ ├── 4_simple_pipeline_forwarding_bug.fl │ ├── 5_correct_pipline_forwarding.fl │ ├── 6_added_load_store_cache.fl │ ├── 7_collatz_data_dep_timing.fl │ ├── 8_collatz_data_indep_timing.fl │ └── new │ └── 6_with_load_store.fl ├── Pretty_printing └── 1_pretty.fl └── verification └── valid_ready_buffer ├── buffer_imp_1.fl ├── buffer_imp_2.fl ├── spec.fl ├── verification_1.fl └── verification_2.fl /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.pexlif 3 | *.o 4 | *.so 5 | *.a 6 | *.dvi 7 | *.hi 8 | y.output 9 | lex.yy.c 10 | y.tab.h 11 | y.tab.c 12 | /src/bin/fl/fl 13 | /src/bin/blif2exe/blif2exe 14 | /src/bin/ignore_signals/ignore_signals 15 | /src/bin/fl/prefs.h 16 | /src/bin/fl/prefs_ext.h 17 | /src/bin/fl/abi_version.h 18 | /bin/ 19 | /vosslib/ 20 | /isomatches/ 21 | .yosys* 22 | TAGS 23 | src/external/yosys/abc/abc-default 24 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:buster 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | 5 | RUN apt-get update && \ 6 | apt-get -y install gcc g++ doxygen flex bison gawk \ 7 | libz-dev tcl-dev tk-dev libc6-dev imagemagick \ 8 | clang libreadline-dev python3 # for yosys 9 | 10 | VOLUME /vossroot 11 | WORKDIR /vossroot/src 12 | CMD make package 13 | -------------------------------------------------------------------------------- /HOW_TO_GET_YOSYS: -------------------------------------------------------------------------------- 1 | Download an archive matching your OS from the releases page 2 | (https://github.com/YosysHQ/oss-cad-suite-build/releases). 3 | 4 | Extract the archive to a location of your choice 5 | 6 | Set the environment: 7 | 8 | export PATH="/oss-cad-suite/bin:$PATH" 9 | 10 | 11 | -------------------------------------------------------------------------------- /IDVII/lib/osu018_stdcells/scripts/non_udp_cells.ys: -------------------------------------------------------------------------------- 1 | # Script to convert verilog to pexlif for stdcells. 2 | read_verilog non_udp_cells.v 3 | hierarchy -check -top dummy 4 | proc 5 | rename -enumerate -pattern _$% 6 | memory -nomap 7 | opt_clean -purge 8 | write_pexlif -noalias -icells -gates -impltf non_udp_cells.fl 9 | 10 | -------------------------------------------------------------------------------- /IDVII/src/fl/bifrost/README: -------------------------------------------------------------------------------- 1 | Library of code supporting bifrost models. 2 | -------------------------------------------------------------------------------- /IDVII/src/fl/bifrost/ack_pulse_delay.fl: -------------------------------------------------------------------------------- 1 | // Module to create an ack pulse from a request signal using the ackpulse 2 | // protocol when the logic inside the module is meant to take cycs cycles. 3 | // (If cycs is 0, then the ack is immediate.) 4 | let ackpulse_delay cycs = 5 | bit_input clk. 6 | bit_input reset. 7 | bit_input req. 8 | bit_output ack. 9 | bit_list_internal (cycs-1) mid. 10 | CELL (sprintf "%d-cycle-delay" cycs) ( 11 | cycs == 0 => [ack <- req] | 12 | (map2 (\i.\o. re_ff_reset clk reset (i '&' '~' ack) o) 13 | (req:mid) (mid@[ack])) 14 | ); 15 | 16 | -------------------------------------------------------------------------------- /IDVII/src/fl/bifrost/ack_pulse_merge.fl: -------------------------------------------------------------------------------- 1 | let ack_pulse_merge = 2 | bit_input clk reset. 3 | bit_list_input reqs. 4 | bit_list_output acks. 5 | bit_output m_req. 6 | bit_input m_ack. 7 | bit_list_output selected. 8 | // 9 | CELL "ack_pulse_merge" ( 10 | (map2 (\sel.\req. sel <- req) selected reqs) @ 11 | (map2 (\ack.\req. ack <- m_ack '&' req) acks reqs) @ 12 | [ m_req <- OR_n reqs ] 13 | ); 14 | 15 | -------------------------------------------------------------------------------- /IDVII/src/fl/bifrost/load.fl: -------------------------------------------------------------------------------- 1 | cload (DIR^"ack_pulse_delay.fl") fseq 2 | fprintf stdinfo "."; 3 | cload (DIR^"mk_bundle_arb_merge.fl") fseq 4 | fprintf stdinfo "."; 5 | cload (DIR^"ack_pulse_arbiter.fl") fseq 6 | fprintf stdinfo "."; 7 | cload (DIR^"ack_pulse_merge.fl") fseq 8 | fprintf stdinfo "."; 9 | cload (DIR^"convert2bundle.fl") fseq 10 | fprintf stdinfo "."; 11 | cload (DIR^"bifrost.fl") fseq 12 | fprintf stdinfo "."; 13 | cload (DIR^"make_interconnect.fl") fseq 14 | fprintf stdinfo "."; 15 | -------------------------------------------------------------------------------- /IDVII/src/fl/design/Makefile: -------------------------------------------------------------------------------- 1 | 2 | generics: make_generic_pexlifs.fl 3 | @-rm -rf generics 4 | @fl -noX -f make_generic_pexlifs.fl 5 | 6 | clean: 7 | @-rm -rf generics 8 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_libraries/arithmetic_library/.gitignore: -------------------------------------------------------------------------------- 1 | DB_arithm 2 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_libraries/arithmetic_library/Makefile: -------------------------------------------------------------------------------- 1 | 2 | 3 | DB_arithm: new_make_arithmetic_db.fl 4 | fl -noX -f new_make_arithmetic_db.fl 5 | 6 | clean: 7 | @-/bin/rm -rf DB_arithm 8 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/.gitignore: -------------------------------------------------------------------------------- 1 | BUG 2 | DB 3 | DB_ALU 4 | DB_adder 5 | DB_adder_OLD 6 | DB_big_adder 7 | DB_cephalopode 8 | DB_collatz 9 | DB_crc 10 | DB_find_first 11 | DB_non_state_matching 12 | DB_test 13 | DB_tst 14 | DBmod 15 | DBmod_mul 16 | DBmod_mul2 17 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/collatz_imp.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/idv_tests/collatz_imp.v -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/crc_demo/g: -------------------------------------------------------------------------------- 1 | set pagination off 2 | break exit 3 | break abort 4 | break Dbg_stop 5 | break Rprintf 6 | r -f idv_crc.fl 7 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/crc_demo/idv_crc.fl: -------------------------------------------------------------------------------- 1 | set_font font_large; 2 | load "idv.fl"; 3 | 4 | update_vossrc "MAX-ENTRIES-IN-STACK-TRACE-TO-PRINT" "400"; 5 | 6 | IDV "DB_crc" []; 7 | 8 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/g: -------------------------------------------------------------------------------- 1 | set pagination off 2 | dir /home/cseger/VossII/src/bin/fl 3 | break visualization_vecs2tags 4 | r --use_stdin --use_stdout -f bug.fl 5 | break vec2indices 6 | c 7 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idea.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | let property name {s :: bit} = 4 | let vs = base_get_lhs_vars (hw_destr s) in 5 | PINST (sprintf "draw_hier %s" name) [] F 6 | [("a",vs)] [("a",vs)] [] (P_HIER []) 7 | ; 8 | 9 | 10 | let tst = 11 | bit_input a b c. 12 | bit_output o. 13 | bit_internal na. 14 | CELL "draw_hier tst" [ 15 | na <- '~' a, 16 | o <- na '&' (b '|' c), 17 | (property "na_prop" na), 18 | (property "b_prop" b), 19 | (property "c_prop" c) 20 | ]; 21 | 22 | let p = tst 'a 'b 'c 'o; 23 | 24 | let ckt = toplevel_pexlif2fsm p; 25 | ckt; 26 | 27 | STE_debug ckt; 28 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_ALU.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | update_vossrc "MAX-ENTRIES-IN-STACK-TRACE-TO-PRINT" "400"; 4 | 5 | IDV "DB_ALU" []; 6 | 7 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_adder.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | update_vossrc "MAX-ENTRIES-IN-STACK-TRACE-TO-PRINT" "400"; 4 | 5 | //system "/bin/rm -rf DB"; 6 | IDV "DB_adder" []; 7 | 8 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_big_adder.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | IDV "DB_big_adder" 4 | [ 5 | "/home/cseger/VossII/IDVII/src/fl/gui/idv_tests/library/DB_arithm" 6 | ] 7 | ; 8 | 9 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_cephalopode.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | update_vossrc "MAX-ENTRIES-IN-STACK-TRACE-TO-PRINT" "400"; 4 | 5 | IDV "DB_cephalopode" []; 6 | 7 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_collatz.fl: -------------------------------------------------------------------------------- 1 | set_font font_large; 2 | 3 | load "idv.fl"; 4 | 5 | // Workaround problem with Verilog writer. 6 | (update_vossrc "RECURSION-CALL-LIMIT" "1000000") fseq (); 7 | 8 | IDV "DB_collatz" []; 9 | 10 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_find_first.fl: -------------------------------------------------------------------------------- 1 | set_font font_large; 2 | 3 | load "idv.fl"; 4 | 5 | // Workaround problem with Verilog writer. 6 | (update_vossrc "RECURSION-CALL-LIMIT" "1000000") fseq (); 7 | 8 | IDV "DB_find_first" []; 9 | 10 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_mod.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | //system "/bin/rm -rf DB"; 4 | IDV "DBmod" ["/home/cseger/VossII/IDVII/src/fl/gui/idv_tests/library/DB_arithm"]; 5 | 6 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_mod_mul.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | //system "/bin/rm -rf DB"; 4 | IDV "DBmod_mul" ["/home/cseger/VossII/IDVII/src/fl/gui/idv_tests/library/DB_arithm"]; 5 | 6 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_mod_mul2.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | IDV "DBmod_mul2" ["/home/cseger/VossII/IDVII/src/fl/gui/idv_tests/library/DB_arithm"]; 4 | 5 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_non_state_matching.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | update_vossrc "MAX-ENTRIES-IN-STACK-TRACE-TO-PRINT" "400"; 4 | 5 | IDV "DB_non_state_matching" []; 6 | 7 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/idv_test.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | update_vossrc "MAX-ENTRIES-IN-STACK-TRACE-TO-PRINT" "400"; 4 | 5 | IDV "DB_test" []; 6 | 7 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/spec_add.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "word" 8; 4 | 5 | let adder3 = 6 | word_input a b c. 7 | word_output o. 8 | CELL "adder3" [ 9 | o <- a '+' b '+' c 10 | ]; 11 | 12 | let p = adder3 'a 'b 'c 'o; 13 | 14 | p fseq (write_pexlif "spec_add.pexlif" p) fseq (); 15 | 16 | quit; 17 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/spec_big_add.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "word" 16; 4 | 5 | let adder9 = 6 | word_input a b c d e f g h i. 7 | word_output o. 8 | CELL "adder9" [ 9 | o <- a '+' b '+' c '+' d '+' e '+' f '+' g '+' h '+' i 10 | ]; 11 | 12 | let p = adder9 'a 'b 'c 'd 'e 'f 'g 'h 'i 'o; 13 | 14 | p fseq (write_pexlif "spec_big_add.pexlif" p) fseq (); 15 | 16 | quit; 17 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/spec_find_first.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | let N = 16; 4 | TYPE "word" N; 5 | TYPE "addr" (ubits_needed N); 6 | 7 | letrec ff_rec cnt (b:bs) = IF {b::bit} THEN ''cnt ELSE ff_rec (cnt+1) bs 8 | /\ ff_rec cnt [] = '0 9 | ; 10 | 11 | let find_first = 12 | input di. 13 | output loc. 14 | CELL "find_first" [ 15 | loc <- ff_rec 1 (rev (tobits di)) 16 | ]; 17 | 18 | let p = find_first {'a::word} {'o::addr}; 19 | 20 | p fseq (write_pexlif "spec_find_first.pexlif" p) fseq (); 21 | 22 | quit; 23 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/spec_mod.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | //let N = 128; 4 | let N = 4; 5 | TYPE "word" N; 6 | 7 | let mod = 8 | word_input a p. 9 | word_output o. 10 | CELL "mod" [ 11 | ASSERT "a in range" (a '<' ''(2**(hw_size a -1))), 12 | ASSERT "p in range" (('0 '<' p) '&' ((p '<' ''(2**(hw_size a -1))))), 13 | o <- a '%' p 14 | ]; 15 | 16 | let p = mod 'a 'p 'o; 17 | 18 | p fseq (write_pexlif "spec_mod.pexlif" p) fseq (); 19 | 20 | quit; 21 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/spec_mod_mul.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | //let N = 128; 4 | let N = 16; 5 | TYPE "word" N; 6 | TYPE "dword" (2*N); 7 | 8 | let dwor2word {v::dword} = {frombits (lastn N (tobits v))::word}; 9 | 10 | let modmul = 11 | word_input a b p. 12 | word_output o. 13 | dword_internal za zb zp zo. 14 | CELL "modmul" [ 15 | za <- ZX a, 16 | zb <- ZX b, 17 | zp <- ZX p, 18 | zo <- (za '*' zb) '%' zp, 19 | o <- dwor2word zo 20 | ]; 21 | 22 | let p = modmul 'a 'b 'p 'o; 23 | 24 | p fseq (write_pexlif "spec_mod_mul.pexlif" p) fseq (); 25 | 26 | quit; 27 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/spec_mod_mul2.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | //let N = 128; 4 | let N = 16; 5 | TYPE "word" N; 6 | 7 | let mod_mul2 = 8 | word_input a b n. 9 | word_output o. 10 | CELL "mul_mod" [ 11 | ASSERT "a in range" (a '<' ''(2**(hw_size a/2))), 12 | ASSERT "b in range" (b '<' ''(2**(hw_size a/2))), 13 | ASSERT "n in range" (('0 '<' n) '&' (n '<' ''(2**(hw_size a/2)))), 14 | o <- (a '*' b) '%' n 15 | ]; 16 | 17 | let p = mod_mul2 'a 'b 'n 'o; 18 | 19 | p fseq (write_pexlif "spec_mod_mul2.pexlif" p) fseq (); 20 | 21 | quit; 22 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/idv_tests/test.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | let buf = 4 | bit_input i. 5 | bit_output o. 6 | bit_internal m. 7 | CELL "draw_hier buf" [ 8 | m <- '~' i, 9 | o <- '~' m 10 | ]; 11 | 12 | 13 | let ex = 14 | bit_input clk a b c. 15 | bit_output o. 16 | bit_internal m1 m2 m3. 17 | CELL "draw_hier ex" [ 18 | m1 <- a '&' '~' b, 19 | re_ff clk m1 m2, 20 | m3 <- m1 '^' (m2 '|' c), 21 | buf m3 o 22 | ]; 23 | 24 | let p = ex 'clk 'a 'b 'c 'o; 25 | 26 | //STE_debug (pexlif2fsm p); 27 | 28 | let idv = start_new_transform p; 29 | idv; 30 | 31 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/load.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | (cload (DIR^"sch_draw/load.fl")) fseq 7 | (); 8 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/X_pat.xbm: -------------------------------------------------------------------------------- 1 | #define X_pat_width 7 2 | #define X_pat_height 7 3 | static unsigned char X_pat_bits[] = { 4 | 0x41, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41 }; 5 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/black.xbm: -------------------------------------------------------------------------------- 1 | #define black_width 16 2 | #define black_height 16 3 | static unsigned char black_bits[] = { 4 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 5 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; 7 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/bufs2wire.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/bufs2wire.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/const_prop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/const_prop.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/db_replace.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/db_replace.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/detach.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/detach.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/duplicate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/duplicate.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/fev.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/fev.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/flatten.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/flatten.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/fold.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/fold.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/folder.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/merge.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/merge.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/new_transf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/new_transf.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/perceptron.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/perceptron.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/rename_wires.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/rename_wires.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/retime_fwd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/retime_fwd.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/unfold.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/unfold.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/images/wire2bufs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/IDVII/src/fl/gui/sch_draw/images/wire2bufs.gif -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/load.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | (cload (DIR^"types.fl")) fseq 7 | (cload (DIR^"draw_sch.fl")) fseq 8 | (cload (DIR^"idv_gui.fl")) fseq 9 | (); 10 | -------------------------------------------------------------------------------- /IDVII/src/fl/gui/sch_draw/verilog_filter.sed: -------------------------------------------------------------------------------- 1 | 1,$s/\([^0-9]\)'/\1___/g 2 | 1,$s/initial/initiall/g 3 | -------------------------------------------------------------------------------- /IDVII/src/fl/verilog/test.v: -------------------------------------------------------------------------------- 1 | module test ( 2 | input wire [7 : 0] i, 3 | output wire [7 : 0] o 4 | ); 5 | test_1 anon_1(.i(i[7:0]), .o(o[7:0])); 6 | endmodule 7 | module test_1 ( 8 | input wire [7 : 0] i, 9 | output wire [7 : 0] o 10 | ); 11 | m_1_1 anon_1_1(.i(i[7:0]), .o(o[7:0])); 12 | endmodule 13 | module m_1_1 ( 14 | input wire [7 : 0] i, 15 | output wire [7 : 0] o 16 | ); 17 | draw_binary_arithm__1_1_1 anon_1_1_1(.i(i[7:0]), ._tmp(o[7:0])); 18 | endmodule 19 | module draw_binary_arithm__1_1_1 ( 20 | input wire [7 : 0] i, 21 | output wire [7 : 0] _tmp 22 | ); 23 | assign _tmp = (i[7:0]) + (i[7:0]); 24 | endmodule 25 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2020 Carl-Johan Seger 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /ckt_examples/M65C02/M65C02_BCD.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/ckt_examples/M65C02/M65C02_BCD.v -------------------------------------------------------------------------------- /ckt_examples/M65C02/README: -------------------------------------------------------------------------------- 1 | A simple processor with an example of a (very simple) verification of 2 | one of its operations. 3 | 4 | The main file is M65C02.fl. 5 | 6 | 7 | Due to changes in the clocking library, the verification does no longer 8 | go through. Some timing assumptions are incorrect. Any volunteer to fix them? 9 | -------------------------------------------------------------------------------- /ckt_examples/diff_cache/README: -------------------------------------------------------------------------------- 1 | A numer of examples from the talk at the Intel workshop in June of 2019. 2 | 3 | -------------------------------------------------------------------------------- /ckt_examples/m32632/TRIPUTER/TRIPUTER.qws: -------------------------------------------------------------------------------- 1 | @(last_workspace -------------------------------------------------------------------------------- /ckt_examples/m32632/TRIPUTER/TRIPUTER.sof.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/ckt_examples/m32632/TRIPUTER/TRIPUTER.sof.zip -------------------------------------------------------------------------------- /ckt_examples/m32632/TRIPUTER/TRIPUTER_V01.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/ckt_examples/m32632/TRIPUTER/TRIPUTER_V01.pdf -------------------------------------------------------------------------------- /ckt_examples/m32632/docs/M32632_AR_V3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/ckt_examples/m32632/docs/M32632_AR_V3.pdf -------------------------------------------------------------------------------- /ckt_examples/m32632/docs/M32632_UM_V3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/ckt_examples/m32632/docs/M32632_UM_V3.pdf -------------------------------------------------------------------------------- /ckt_examples/m32632/rtl/.gitignore: -------------------------------------------------------------------------------- 1 | DB_dcache 2 | DB_m32632 3 | DB_sp_fpu 4 | -------------------------------------------------------------------------------- /ckt_examples/m32632/rtl/DCACHE.fl: -------------------------------------------------------------------------------- 1 | update_vossrc "RECURSION-CALL-LIMIT" "50000"; 2 | 3 | load "ste.fl"; 4 | 5 | let p = verilog2pexlif F "" "DCACHE" ["DCACHE.v", 6 | "ALIGNER.v", 7 | "CACHE_LOGIK.v" 8 | ] []; 9 | 10 | time (p fseq 1); 11 | 12 | IDV p "DB_dcache" []; 13 | 14 | -------------------------------------------------------------------------------- /ckt_examples/m32632/rtl/SP_FPU.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | let p = verilog2pexlif F "" "SP_FPU" ["SP_FPU.v"] []; 4 | time (p fseq 1); 5 | 6 | IDV p "DB_sp_fpu" []; 7 | -------------------------------------------------------------------------------- /ckt_examples/m32632/software/ans32k.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/ckt_examples/m32632/software/ans32k.exe -------------------------------------------------------------------------------- /ckt_examples/or1200_hp/trunk/doc/Hyper_Pipelined_OR1200_Spec_Draft.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/ckt_examples/or1200_hp/trunk/doc/Hyper_Pipelined_OR1200_Spec_Draft.pdf -------------------------------------------------------------------------------- /ckt_examples/or1200_hp/trunk/ise/ise_cm2/or1200_top_cm2.ucf: -------------------------------------------------------------------------------- 1 | NET "clk_i" TNM_NET = clk_i; 2 | TIMESPEC TS_clk_i = PERIOD "clk_i" 0.5 ns HIGH 50%; 3 | NET "clk_i_cml_1" TNM_NET = clk_i_cml_1; 4 | TIMESPEC TS_clk_i_cml_1 = PERIOD "clk_i_cml_1" 0.5 ns HIGH 50%; 5 | -------------------------------------------------------------------------------- /ckt_examples/or1200_hp/trunk/ise/ise_cm2_top/or1200_top_cm2_top.ucf: -------------------------------------------------------------------------------- 1 | NET "clk_i" TNM_NET = clk_i; 2 | TIMESPEC TS_clk_i = PERIOD "clk_i" 7.12 ns HIGH 50%; 3 | -------------------------------------------------------------------------------- /ckt_examples/or1200_hp/trunk/ise/ise_cm3_top/or1200_top_cm3_top.ucf: -------------------------------------------------------------------------------- 1 | NET "clk_i" TNM_NET = clk_i; 2 | TIMESPEC TS_clk_i = PERIOD "clk_i" 4.88 ns HIGH 50%; 3 | -------------------------------------------------------------------------------- /ckt_examples/or1200_hp/trunk/ise/ise_cm4_top/or1200_top_cm4_top.ucf: -------------------------------------------------------------------------------- 1 | NET "clk_i" TNM_NET = clk_i; 2 | TIMESPEC TS_clk_i = PERIOD "clk_i" 3.7632 ns HIGH 50%; 3 | -------------------------------------------------------------------------------- /ckt_examples/or1200_hp/trunk/ise/ise_orig/or1200_top.ucf: -------------------------------------------------------------------------------- 1 | NET "clk_i" TNM_NET = clk_i; 2 | TIMESPEC TS_clk_i = PERIOD "clk_i" 13.5 ns HIGH 50%; 3 | -------------------------------------------------------------------------------- /ckt_examples/or1200_hp/trunk/rtl/timescale.v: -------------------------------------------------------------------------------- 1 | `timescale 1ps/1ps 2 | -------------------------------------------------------------------------------- /ckt_examples/simple_examples/.gitignore: -------------------------------------------------------------------------------- 1 | DB_ex1 2 | -------------------------------------------------------------------------------- /ckt_examples/simple_examples/label_example.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "word" 8; 4 | 5 | let tst = 6 | bit_input clk. 7 | word_input a b c. 8 | word_output o. 9 | internal tmp o1. 10 | CELL "tst" [ 11 | "def" ::: re_ff clk (a '+' (b '*' c)) o1, 12 | "abc" ::: tmp <- (a '*' (b '+' c)), 13 | "qqq" ::: o <- (IF (o1 '=' tmp) THEN (IF (a '=' b) THEN c ELSE b) ELSE c) 14 | ]; 15 | 16 | let p = tst 'clk 'a 'b 'c 'o; 17 | 18 | //p; 19 | 20 | let p' = pexlif_group_by_label p; 21 | //p'; 22 | 23 | 24 | system "rm -fr DB_q"; 25 | 26 | IDV p' "DB_q" []; 27 | -------------------------------------------------------------------------------- /ckt_examples/simple_examples/medium.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "byte" 4; 4 | 5 | let tst = 6 | byte_input a b c. 7 | byte_output o. 8 | CELL "tst" [ 9 | o <- (IF (a '>' b) THEN (c '-' a) ELSE (c '-' b)) 10 | ]; 11 | 12 | let p = tst 'a 'b 'c 'o; 13 | p fseq (); 14 | 15 | system "rm -rf DB_medium"; 16 | 17 | IDV p "DB_medium" []; 18 | -------------------------------------------------------------------------------- /ckt_examples/simple_examples/tiny.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "byte" 8; 4 | 5 | let tst = 6 | bit_input a b c. 7 | bit_output o. 8 | CELL "tst" [ 9 | o <- a '&' (b '|' '~' c) 10 | ]; 11 | 12 | let p = tst 'a 'b 'c 'o; 13 | p fseq (); 14 | 15 | system "rm -rf DB_tiny"; 16 | 17 | IDV p "DB_tiny" []; 18 | 19 | -------------------------------------------------------------------------------- /doc/fl_guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_guide.pdf -------------------------------------------------------------------------------- /doc/fl_plugins.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_plugins.pdf -------------------------------------------------------------------------------- /doc/fl_tutorial/figs/forte_help.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/figs/forte_help.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/figs/forte_start.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/figs/forte_start.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/figs/forte_with_args_start.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/figs/forte_with_args_start.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0001.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0002.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0003.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0004.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0005.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0005.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0006.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0006.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0007.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0007.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0008.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0008.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0009.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0009.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0010.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0011.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0011.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0012.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0013.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0013.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0014.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0014.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0015.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0015.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0016.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0016.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0017.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0017.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0018.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0018.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0019.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0019.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0020.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0021.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0022.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0022.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0023.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0024.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0025.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0025.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0026.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0026.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_code/code_0027.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_code/code_0027.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_img/ste1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_img/ste1.jpg -------------------------------------------------------------------------------- /doc/fl_tutorial/tut_img/ste2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/doc/fl_tutorial/tut_img/ste2.jpg -------------------------------------------------------------------------------- /isomatches/767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60.pex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/isomatches/767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60.pex -------------------------------------------------------------------------------- /isomatches/767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60.match: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/isomatches/767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60.match -------------------------------------------------------------------------------- /isomatches/matches: -------------------------------------------------------------------------------- 1 | 767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60767714a5159f4569528362ba26f85d7e4af61cc265c4fdce2aff082274692e60 2 | -------------------------------------------------------------------------------- /modes/visual studio code/vossii-fl-1.3.0.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/modes/visual studio code/vossii-fl-1.3.0.vsix -------------------------------------------------------------------------------- /modes/visual studio code/vossii-fl/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.vsix 3 | -------------------------------------------------------------------------------- /modes/visual studio code/vossii-fl/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that launches the extension inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ] 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /modes/visual studio code/vossii-fl/bifrost-language-configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "comments": { 3 | // symbol used for single line comment. Remove this entry if your language does not support line comments 4 | "lineComment": "//", 5 | }, 6 | // symbols used as brackets 7 | "brackets": [ 8 | ["{", "}"], 9 | ["(", ")"] 10 | ], 11 | // symbols that are auto closed when typing 12 | "autoClosingPairs": [ 13 | ["{", "}"], 14 | ["(", ")"], 15 | ["\"", "\""], 16 | ], 17 | // symbols that can be used to surround a selection 18 | "surroundingPairs": [ 19 | ["{", "}"], 20 | ["(", ")"], 21 | ["\"", "\""], 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /src/IDVII: -------------------------------------------------------------------------------- 1 | ../IDVII -------------------------------------------------------------------------------- /src/bifrost/Properties.hs: -------------------------------------------------------------------------------- 1 | module Properties (isInstant) where 2 | 3 | {- 4 | Important properties that we want to be interpreted consistently. 5 | -} 6 | 7 | import Types 8 | 9 | -- Is the result of this available immediately? 10 | -- Precondition: protocol is Protocol, not ProtocolAuto 11 | isInstant :: Protocol -> Bool 12 | isInstant proto = 13 | case proto of 14 | ProtocolAuto -> error "cannot apply isInstant to ProtocolAuto" 15 | _ -> case (proto_power proto, proto_data proto) of 16 | (AlwaysOn, Immediate _) -> True 17 | _ -> False 18 | -------------------------------------------------------------------------------- /src/bifrost/SyncProgram.hs: -------------------------------------------------------------------------------- 1 | module SyncProgram where 2 | 3 | import qualified Data.Map as M 4 | import Types 5 | import PrettyPrint 6 | 7 | findActivity :: SyncProgram -> ActivityLabel -> Maybe Activity 8 | findActivity prog label = M.lookup label $ bitp_activities prog 9 | 10 | mustFindActivity :: SyncProgram -> ActivityLabel -> Activity 11 | mustFindActivity prog label = 12 | case findActivity prog label of 13 | Just activity -> activity 14 | Nothing -> error $ "Could not find activity: " ++ show label 15 | -------------------------------------------------------------------------------- /src/bifrost/doc/semantics_20220224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bifrost/doc/semantics_20220224.png -------------------------------------------------------------------------------- /src/bin/fl/.gdbinit: -------------------------------------------------------------------------------- 1 | dir ../../lib 2 | -------------------------------------------------------------------------------- /src/bin/fl/ENV: -------------------------------------------------------------------------------- 1 | unsetenv TCL_LIBRARY 2 | unsetenv TK_LIBRARY 3 | # setenv TCL_LIBRARY /home/cseger/Voss/distribution/bin/fl/tcl_doc/src/tcl7.4/library 4 | # setenv TK_LIBRARY /home/cseger/Voss/distribution/bin/fl/tcl_doc/src/tk4.0/library 5 | -------------------------------------------------------------------------------- /src/bin/fl/FL: -------------------------------------------------------------------------------- 1 | #!/bin/csh 2 | ./fl 3 | -------------------------------------------------------------------------------- /src/bin/fl/REGRESS: -------------------------------------------------------------------------------- 1 | # 2 | unlimit stacksize 3 | set file=`mktemp /tmp/REGRES_XXXXXX` 4 | foreach f (`ls bugs/*.fl`) 5 | if( $f == "bugs/b79b.fl" ) continue 6 | if( $f == "bugs/b79.fl" ) continue 7 | if( $f == "bugs/87.fl" ) continue 8 | if( $f == "bugs/94.fl" ) continue 9 | echo "=============== $f ===================" 10 | cat $f > $file 11 | echo "quit;" >> $file 12 | fl -f $file 13 | end 14 | -------------------------------------------------------------------------------- /src/bin/fl/TST: -------------------------------------------------------------------------------- 1 | #!/bin/csh 2 | set cnt=$argv[1] 3 | 4 | set cnt = `expr $cnt - 1` 5 | fl.bin -D -noX -f bugs/b1.fl 6 | set st=$status 7 | while ($st == 0 && $cnt > 0) 8 | set cnt = `expr $cnt - 1` 9 | fl.bin -D -noX -f bugs/b1.fl 10 | set st=$status 11 | end 12 | -------------------------------------------------------------------------------- /src/bin/fl/TST2: -------------------------------------------------------------------------------- 1 | #!/bin/csh 2 | set cnt=$argv[1] 3 | 4 | set cnt = `expr $cnt - 1` 5 | fl.bin -D -noX -f bugs/b1bdd.fl 6 | set st=$status 7 | while ($st == 0 && $cnt > 0) 8 | set cnt = `expr $cnt - 1` 9 | fl.bin -D -noX -f bugs/b1bdd.fl 10 | set st=$status 11 | end 12 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/M65C02/M65C02_BCD.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bin/fl/bugs/M65C02/M65C02_BCD.v -------------------------------------------------------------------------------- /src/bin/fl/bugs/M65C02/README: -------------------------------------------------------------------------------- 1 | A simple processor with an example of a (very simple) verification of 2 | one of its operations. 3 | 4 | The main file is M65C02.fl. 5 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b10.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | lettype e = 8 | EVAR string 9 | | EPLUS e e 10 | | EMUL e e 11 | | ECOND b e e 12 | andlettype b = 13 | BVAR string 14 | | BAND b b 15 | | GEQ e e 16 | | BNOT b 17 | ; 18 | 19 | read_e ; 20 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b108.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | 9 | TYPE "byte" 8; 10 | 11 | let t1 = 12 | byte_input a b. 13 | bit_input c. 14 | byte_input d. 15 | byte_output o. 16 | CELL "tst" [ 17 | o <- (IF c THEN (a '+' b) ELSE d) 18 | ]; 19 | 20 | 21 | t1 'a 'b 'c 'd 'o; 22 | 23 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b110.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | let p = 9 | PINST "tst" [] T [] [] ["foo[1:0][1:0]"] (P_LEAF []) 10 | ; 11 | 12 | update_vossrc "VERBOSE-FSM-PRINT" "YES"; 13 | 14 | let ckt = pexlif2fsm p; 15 | ckt; 16 | 17 | nodes ckt; 18 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b111.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let fp = fopen "/tmp/123" "w"; 8 | 9 | fprintf fp "Ahh\n"; 10 | 11 | fclose fp; 12 | 13 | bdd_reorder 1; 14 | var_order []; 15 | 16 | fclose fp; 17 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b115.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | TYPE "dt" 3; 9 | TYPE "at" 2; 10 | TYPE "mt" 9; 11 | let p = MEM_WRITE "CPU_REGS" {'d::dt} {'e::bit} {'a::at} {'m::mt}; 12 | p; 13 | 14 | pexlif2fsm p; 15 | 16 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b119.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let a = (bev_variable "a[8:0]"); 8 | 9 | let d = bev_div a (int2bev 8); 10 | 11 | let dd = bev_ashr a 3; 12 | 13 | length (bev2list d); 14 | length (bev2list dd); 15 | 16 | 17 | 18 | let a = (bv_variable "a[8:0]"); 19 | 20 | let d = bv_div a (int2bv 8); 21 | 22 | let dd = bv_ashr a 3; 23 | 24 | length (bv2list d); 25 | length (bv2list dd); 26 | 27 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b121.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | letrec fib 0 = 1 7 | /\ fib 1 = 1 8 | /\ fib n = fib (n-1) + fib (n-2) 9 | ; 10 | 11 | let e1 = fib 30; 12 | time e1; 13 | 14 | let e1 = fib 30; 15 | wtime e1; 16 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b124.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | let ckt = verilog2fsm "" "SP_FPU" [DIR^"/SP_FPU.v"] []; 9 | time ckt; 10 | 11 | let vis = STE_debug ckt; 12 | 13 | vis; 14 | 15 | random_simulation vis [("BCLK","01")] [] 30; 16 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b140.bexpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bin/fl/bugs/b140.bexpr -------------------------------------------------------------------------------- /src/bin/fl/bugs/b148.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | // Stack overflow..... 7 | 8 | let l = 1--1000000; 9 | 10 | let pfn fp i = fprintf fp "%d\n" i; 11 | 12 | let fp = fopen "/tmp/Dhas" "w"; 13 | 14 | update_vossrc "RECURSION-CALL-LIMIT" "10000000"; 15 | 16 | list2fp fp T "Start\n" "----\n" "END" pfn l; 17 | 18 | fclose fp; 19 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b150.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let t1 = {tbl_create 100 :: {string#int} tbl}; 8 | 9 | let t2 = tbl_create 100; 10 | 11 | let t3 = tbl_insert (tbl_create 100) "a" 1; 12 | 13 | t3; 14 | 15 | tbl2list t3; 16 | 17 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b152.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let cmp a b = a-b; 7 | let l = 1--200000; 8 | let l' = qsort cmp l; 9 | wtime (l' fseq 2); 10 | 11 | let l = rev l; 12 | let l'' = qsort cmp l; 13 | wtime (l'' fseq 2); 14 | 15 | l' == l''; 16 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b153.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | lettype tr = BR tr tr | LF; 8 | 9 | rvariable "a"; 10 | 11 | let simpl_table = ref {(tbl_create 1000):: {bv,tr} tbl}; 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b157.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | let tst = 9 | input {p:: bit#bit}. 10 | bit_output o1 o2. 11 | CELL "tst" [ 12 | o1 <- fst p, 13 | o2 <- snd p 14 | ]; 15 | 16 | pexlif2fsm (tst {('a,'b):: bit#bit} 'o1 'o2); 17 | 18 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b164.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | let N = 2; 9 | 10 | rvariable "a"; 11 | 12 | internal_array (N+2) {aa:: bit list} {bb:: bit list}. (CELL "A" []); 13 | 14 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b165.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let i = 2**63; 8 | let j = 9223372036854775808; // Correct answer. 9 | 10 | int2str i; 11 | 12 | i = j; // Yes! 13 | 14 | int2str i; 15 | int2str j; 16 | 17 | i = (sscanf "%d" (int2str i)); 18 | (sscanf "%d" (int2str i)); 19 | 20 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b171.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | ENUM "shadok" ["GA", "BU", "ZO", "MEU"]; 4 | 5 | ENUM "foobar" ["foo", "bar"]; 6 | 7 | STRUCT "bla" 6 [ 8 | ("foobar", "foobar", [0]), 9 | ("gibi", "shadok", (1--2)) 10 | ]; 11 | 12 | let bug = 13 | bla_output blablabla. 14 | CELL "bug" [ 15 | blablabla <- 16 | '0<--foobar ? bar 17 | <--gibi ? '0 18 | ] 19 | ; 20 | bug 'out; 21 | 22 | STE_debug (pexlif2fsm (bug 'out)); 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b172.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | TYPE "byte" 8; 4 | 5 | rvariable "a"; 6 | 7 | let tst = 8 | bit_input a b. 9 | byte_input xv yv. 10 | bit_output out. 11 | byte_output sum. 12 | CELL "tst" [ 13 | out <- a '&' b, 14 | sum <- xv '+' yv 15 | ]; 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b173.fl: -------------------------------------------------------------------------------- 1 | VARS "a b c d e f"; 2 | 3 | rvariable "a"; 4 | 5 | let ex = 6 | let nA = f => F | T in 7 | let nB = e => nA | F in 8 | let nC = d => T | nB in 9 | let nD = d => F | nB in 10 | let nE = c => nD | nC in 11 | let nF = b => nE | nB in 12 | let nG = a => nE | nF in 13 | nG 14 | ; 15 | 16 | 17 | draw_bdds F [ex]; 18 | 19 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b176.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | TYPE "byte" 8; 4 | 5 | STRUCT "foo" [("valid", "bit"), ("data", "byte")]; 6 | 7 | 8 | let p = 'a <- '0<--valid ? '1 9 | <--data ? '0xc 10 | ; 11 | 12 | p; 13 | 14 | update_vossrc "VERBOSE-FSM-PRINT" "YES"; 15 | 16 | let ckt = pexlif2fsm p; 17 | 18 | ckt; 19 | 20 | STE_debug ckt; 21 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b177.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | 4 | let stable duration = 5 | bit_input inp. 6 | bit_output stable. 7 | internal old. 8 | bit_internal same. 9 | bit_list_internal duration same_list. 10 | CELL "draw_hier duration" ( 11 | (map2 (\o.\i. o <: i) same_list ((tl same_list)@[same]))@[ 12 | old <: inp, 13 | same <- (old '=' inp), 14 | stable <- itlist (\s.\r. s '&' r) same_list '1 15 | ]); 16 | 17 | let q = stable 2 'inp 'stable; 18 | q; 19 | 20 | pexlif2fsm q; 21 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b179.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | let INT_SZ = 3; 4 | 5 | // TYPE -- Int -- Integer 6 | TYPE "simple_Int" INT_SZ; 7 | 8 | STRUCT "Int" INT_SZ [ 9 | ("simple_Int", "simple_Int", (INT_SZ-1 -- 0)), 10 | ("msb", "bit", [INT_SZ-1]), 11 | ("lsb", "bit", [0]) 12 | ]; 13 | 14 | let p = 15 | Int_internal n next_n. 16 | CELL "p" [ 17 | CASE next_n [ 18 | n '=' '8 --- '9 19 | ] 'X 20 | ]; 21 | 22 | p fseq 1; 23 | 24 | Emit_pexlif "_qq" p; 25 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b18.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | // Test of external scanner 7 | 8 | let f = 9 | <{ 10 | 12+99+999999999999999 11 | }> "cat -" ; 12 | 13 | f; 14 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b19.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let tst x = 8 | (fprintf stderr "f: |%s|\n" x) fseq 9 | let res = eval "fprintf stderr \"Ahhh\\n\"; letrec fac n = n=0 => 1 | n*fac (n-1);" then 10 | (fprintf stderr "Done\n") fseq 11 | (eval (sprintf "let oink = \"%s\";\n" x)) fseq 12 | res 13 | ; 14 | 15 | tst "abc"; 16 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b192.fl: -------------------------------------------------------------------------------- 1 | 2 | lettype *a tr1 = BR1 (({*a} tr1) list) | LF1 *a; 3 | 4 | lettype {*a} tr1 = BR2 (({*a} tr1) list) | LF2 *a; 5 | 6 | lettype {*a,*b} tr2 = BR3 {subtrees :: (({*a,*b} tr2) list)} 7 | | LFA3 {data1:: *a} 8 | | LFB3 {data2:: *b} 9 | | LF3 {data1:: *a} {data2:: *b} 10 | ; 11 | 12 | let q = BR3 [(BR3 [LFA3 1, LFB3 "a"]), BR3 [LF3 2 "b"]]; 13 | q; 14 | 15 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b193.fl: -------------------------------------------------------------------------------- 1 | let sum as = sitlist (\a. \s. a + s) as 0; 2 | 3 | let md_sizes as = sum (map md_size as); 4 | 5 | let compare f as = 6 | let l = md_sizes as in 7 | let bs = md_expand_vectors as in 8 | let cs = f bs in 9 | l == md_sizes bs AND l == md_sizes cs 10 | ; 11 | 12 | let compare_merge = compare md_merge_vectors; 13 | let compare_extract = compare md_extract_vectors; 14 | 15 | compare_merge ["a[31:24, 15:8,4,1:0]"]; 16 | compare_merge ["a[31:24, 15:8,4,1:0]","b[4:2, 0]"]; 17 | 18 | compare_extract ["a[31:24, 15:8,4,1:0]"]; 19 | compare_extract ["a[31:24, 15:8,4,1:0]","b[4:2, 0]"]; 20 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b194.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | TYPE "byte" 8; 3 | 4 | help "THEN"; 5 | rvariable "a"; 6 | 7 | {IF {'1::bit} THEN '1 ELSE '0 :: byte}; 8 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b195.fl: -------------------------------------------------------------------------------- 1 | 2 | lettype tr = BR tr tr | LF int; 3 | 4 | rvariable "a"; 5 | 6 | letrec sum (BR tr t2) = sum tr + sum t2 7 | /\ sum (LF i) = i 8 | ; 9 | 10 | //let f x y = x*x + y*y + 0; 11 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b196.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | let p = (PINST "" [] T [] [] [] (P_LEAF [])); 4 | write_pexlif "/tmp/test_1" p; 5 | p fseq (); 6 | write_pexlif "/tmp/test_2" p; 7 | 8 | let q = read_pexlif "/tmp/test_2"; 9 | 10 | let qq = read_pexlif "/tmp/test_1"; 11 | 12 | 13 | q fseq (); 14 | 11111; 15 | qq fseq (); 16 | 2222; 17 | 18 | q == qq; 19 | q == p; 20 | qq == p; 21 | 22 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b197.fl: -------------------------------------------------------------------------------- 1 | 2 | get_combinator_expression "+"; 3 | 4 | 5 | load "ste.fl"; 6 | 7 | 8 | get_combinator_expression "i_plus"; 9 | 10 | let f1 x = x+1; 11 | 12 | let f2 x y = f1 (x*x + y*y); 13 | 14 | let f3 x y = x*x + y*y; 15 | 16 | get_definition "f1"; 17 | get_combinator_expression "f1"; 18 | get_definition "f2"; 19 | get_combinator_expression "f2"; 20 | get_definition "f3"; 21 | get_combinator_expression "f3"; 22 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b198.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | let test = 4 | bit_input i. 5 | bit_output o. 6 | CELL "test" [ 7 | o <- '~' i 8 | ]; 9 | 10 | let p = test 'i 'o; 11 | let ckt = pexlif2fsm p; 12 | ckt; 13 | 14 | VARS "a b c"; 15 | 16 | let ant = [ 17 | (a, "i", T, 0, 1), 18 | (NOT a, "i", F, 0, 1) 19 | ]; 20 | 21 | let ste = STE "-e" ckt [] ant [] []; 22 | ste; 23 | 24 | get_trace_val ste "o" 0; 25 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b199.fl: -------------------------------------------------------------------------------- 1 | merge_vectors ["a[10,9,8]"]; 2 | md_merge_vectors ["a[10,9,8]"]; 3 | md_merge_vectors ["a[10,9,8,3:0]"]; 4 | merge_vectors ["a[10,9,8,3:0]"]; 5 | md_merge_vectors ["a[10]","a[1]","a[0]"]; 6 | md_merge_vectors ["a[10]","a[9]","a[1]","a[0]"]; 7 | merge_vectors ["a[10]","a[9]","a[1]","a[0]"]; 8 | merge_vectors ["a[10:9]", "a[1:0]"]; 9 | merge_vectors ["a[10:9,1:0]"]; 10 | md_merge_vectors ["a[10:9]", "a[1:0]"]; 11 | md_merge_vectors ["a[10:9,1:0]"]; 12 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b20.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | letrec fib 0 = 1 8 | /\ fib 1 = 1 9 | /\ fib n = fib (n-1) + fib (n-2) 10 | ; 11 | 12 | printf "==== Test of interrupt ====\n"; 13 | printf "Hit interrupt and try different alternatives!\n"; 14 | 15 | // Test of interrupts 16 | fib 30; 17 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b201.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | update_vossrc "RECURSION-CALL-LIMIT" "50000"; 4 | 5 | let p = verilog2pexlif "" "M32632" [ 6 | "M32632.v", 7 | "STEUERUNG.v", 8 | "ICACHE.v", 9 | "DCACHE.v", 10 | "CACHE_LOGIK.v", 11 | "ALIGNER.v", 12 | "REGISTERS.v", 13 | "SP_FPU.v", 14 | "DP_FPU.v", 15 | "I_PFAD.v", 16 | "ICACHE_SM.v", 17 | "ADDR_UNIT.v", 18 | "DATENPFAD.v", 19 | "STEUER_MISC.v", 20 | "DECODER.v", 21 | "TOP_MISC.v" 22 | ] [] 23 | ; 24 | 25 | wtime (p fseq 1); 26 | 27 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b205.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | let p = PINST "top" [] F 4 | [("a[1:0]", ["a[1:0]"])] 5 | [("o[1:0]", ["o[1:0]"])] 6 | [] 7 | (P_HIER [ 8 | (PINST "mid" [] F 9 | [("b[1]",["a[1]"]), ("b[0]",["a[0]"])] 10 | [("x[1:0]",["o[1:0]"])] 11 | [] 12 | (P_HIER [ 13 | PINST "lf" [] T 14 | [("i1",["b[1]"]), ("i2",["b[0]"])] 15 | [("o[1:0]",["x[1:0]"])] 16 | [] 17 | (P_LEAF [ 18 | W_UPDATE_FN (W_VAR 2 "o") 19 | (W_CAT [ 20 | W_VAR 1 "i1", 21 | W_VAR 1 "i2"])] 22 | ) 23 | ] 24 | ) 25 | ) 26 | ]) 27 | ; 28 | 29 | p; 30 | 31 | unfold_pexlif p 1; 32 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b206.fl: -------------------------------------------------------------------------------- 1 | 2 | let p = read_pexlif (DIR^"cephalopode.pexlif"); 3 | 4 | p fseq 1; 5 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b207.fl: -------------------------------------------------------------------------------- 1 | let N1 = 784637716923335095479473677900958302012794430558004314100; 2 | let N2 = 142; 3 | let N3 = 784637716923335095479473677900958302012794430558004314090; 4 | let N4 = 67; 5 | let N5 = 22; 6 | let N6 = 11; 7 | let N7 = 28; 8 | let N8 = 784637716923335095479473677900958302012794430558004314090; 9 | 10 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b208.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | TYPE "bv16" 16; 3 | TYPE "bv32" 32; 4 | 5 | let zx_imply_range_property = 6 | bv16_input i1. // a[15:0] 7 | bv32_output o1. // za[31:0] 8 | CELL "zx_imply_range_property" [ 9 | o1 <- ZX i1, 10 | ASSERT "in_range" (o1 '<' ''(2**16)) 11 | ]; 12 | 13 | 14 | let p = zx_imply_range_property 15 | {(_s2_var "a[15:0]")::bv16} 16 | {(_s2_var "za[31:0]")::bv32} 17 | ; 18 | p fseq (); 19 | 20 | let pp = wrap_pexlif p; 21 | 22 | pp; 23 | 24 | unfold_pexlif pp 1; 25 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b209.fl: -------------------------------------------------------------------------------- 1 | let p = 2 | PINST "abc" [] F [("a[3]",["a[3]"])] [("a[4]",["a[4]"])] [] (P_HIER [ 3 | PINST "draw_inverter" [] F [("i",["a[3]"])] [("o",["a[4]"])] [] 4 | (P_LEAF [(W_UPDATE_FN (W_VAR 1 "o") (W_NOT (W_VAR 1 "i")))]) 5 | ]) 6 | ; 7 | 8 | update_vossrc "VERBOSE-FSM-PRINT" "YES"; 9 | 10 | let ckt = pexlif2fsm p; 11 | ckt; 12 | 13 | fanin ckt "a[4]"; 14 | 15 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b21.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let fp = mktemp "abc"; 7 | fp; 8 | 9 | stream2filename fp; 10 | 11 | fprintf fp "Test Test Test\n"; 12 | 13 | fclose fp; 14 | 15 | stream2filename fp; 16 | 17 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b211.fl: -------------------------------------------------------------------------------- 1 | 2 | separate ["a","b","c","d"] [1,3]; 3 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b215.fl: -------------------------------------------------------------------------------- 1 | let oink = 12; 2 | 3 | begin_abstype; 4 | 5 | let split x = x+x; 6 | 7 | let foo x = split x; 8 | 9 | end_abstype foo; 10 | 11 | let xx = 22; 12 | 13 | begin_abstype; 14 | 15 | let inc x = x+1; 16 | 17 | let bar x = (inc x); 18 | 19 | end_abstype bar; 20 | 21 | split (\x.x % 2 = 0) [1,2,3,4,5]; 22 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b216.fl: -------------------------------------------------------------------------------- 1 | 2 | let abba = 12; 3 | 4 | forward_declare {inc:: int->int}; 5 | 6 | let foo x y = 7 | inc x * inc y 8 | ; 9 | 10 | let inc x = x+1; 11 | 12 | inc 12; 13 | 14 | rvariable "a"; 15 | 16 | begin_abstype; 17 | 18 | let oink x = x+99; 19 | 20 | end_abstype oink; 21 | 22 | inc 1; 23 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b217.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | let tst = 4 | bit_input a b. 5 | bit_output o. 6 | bit_internal m. 7 | CELL "tst" [ 8 | m <- '~' (a '&' b), 9 | o <- '~' m 10 | ]; 11 | 12 | let q = 13 | bit_input a b c d. 14 | bit_output o. 15 | bit_internal m1 m2 m3. 16 | CELL "q" [ 17 | tst a b m1, 18 | tst m1 c m2, 19 | tst m2 d o 20 | ]; 21 | 22 | let p = (q 'a 'b 'c 'd 'o); 23 | 24 | p fseq (); 25 | 26 | write_pexlif "b217.pexlif" p; 27 | 28 | ["a", "m1", "c"] vec_intersect ["a", "c", "d", "o"]; 29 | 30 | IDV "DB217" []; 31 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b22.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 1, sscanf "abc" "abc"; 7 | 8 | 2, (sscanf "abc" " abc") gen_catch (\msg. fprintf stderr "%s\n" msg); 9 | 10 | 3, (sscanf "abc" "def") gen_catch (\msg. fprintf stderr "%s\n" msg); 11 | 12 | 4, sscanf "%d" "43"; 13 | 14 | 5, sscanf "%3d" "4301"; 15 | 16 | 6, sscanf "%3o" "4301"; 17 | 18 | 7, sscanf "%b" "10101"; 19 | 20 | 8, sscanf "%3b%04b" "1010111"; 21 | 22 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b220.fl: -------------------------------------------------------------------------------- 1 | 2 | begin_abstype; 3 | 4 | let foo x y = 2*x + 2*y; 5 | 6 | let bar x = foo x x; 7 | 8 | let foo x y = x+y; 9 | 10 | end_abstype foo bar; 11 | 12 | foo 1 1; 13 | bar 1; 14 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b222.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | let p = verilog2pexlif F "" "b222" ["b222.v"] []; 4 | p fseq 1; 5 | 6 | let ckt = pexlif2fsm p; 7 | ckt; 8 | 9 | STE_debug ckt; 10 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b222.v: -------------------------------------------------------------------------------- 1 | 2 | module b222 (BCLK, WR_MRAM, VADR, MMU_DIN, rd_addr, rd_result); 3 | 4 | input BCLK; 5 | input WR_MRAM; 6 | input [31:0] VADR; 7 | input [23:0] MMU_DIN; 8 | input [1:0] rd_addr; 9 | output [35:0] rd_result; 10 | 11 | reg [31:0] VADR_R; 12 | reg [35:0] MMU_TAGS [0:3]; 13 | 14 | always @(posedge BCLK) VADR_R <= VADR; 15 | 16 | always @(negedge BCLK) if (WR_MRAM) MMU_TAGS[VADR_R[19:18]] <= {VADR_R[31:20],MMU_DIN[23:0]}; 17 | 18 | assign rd_result = MMU_TAGS[rd_addr]; 19 | 20 | endmodule 21 | 22 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b225.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | TYPE "byte" 8; 4 | 5 | STRUCT "str" [ 6 | ("high", "byte"), 7 | ("low", "byte") 8 | ]; 9 | 10 | 11 | let tst = 12 | byte_input i1 i2. 13 | str_output sum. 14 | byte_internal m1 m2. 15 | CELL "tst" [ 16 | m1 <- i1 '+' '1, 17 | m2 <- i2 '+' '1, 18 | sum <- '0 <-- high ? m1 19 | <-- low ? m2 20 | ]; 21 | 22 | let p = tst 'i1 'i2 'sum; 23 | 24 | let ckt = pexlif2fsm p; 25 | ckt; 26 | 27 | STE_debug ckt; 28 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b227.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | 3 | TYPE "word" 4; 4 | 5 | let test = 6 | bit_input clk. 7 | word_input a b. 8 | word_output out. 9 | word_internal mid. 10 | CELL "test" [ 11 | mid <- a '+' b, 12 | re_ff clk mid out 13 | ]; 14 | 15 | let p = test 'clk 'a 'b 'out; 16 | 17 | pexlif2verilog F stdout p; 18 | 19 | safe_pexlif2verilog F stdout p; 20 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b229.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | let tst = 4 | bit_input a b. 5 | bit_output res. 6 | CELL "tst" [ 7 | res <- a '<#=' b 8 | ]; 9 | 10 | let p = tst 'a 'b 'res; 11 | 12 | p; 13 | 14 | let ckt = pexlif2fsm p; 15 | ckt; 16 | 17 | //let vis = STE_debug ckt; 18 | 19 | let ant = 20 | "a" is 0 in_phase 2 followed_by 21 | 1 in_phase 3 22 | and 23 | "b" is 0 in_phase 2 followed_by 24 | 1 in_phase 3 25 | ; 26 | 27 | let ste = STE "-e" ckt [] ant [] []; 28 | ste; 29 | 30 | 31 | get_trace ste "res"; 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b230.fl: -------------------------------------------------------------------------------- 1 | 2 | let fl_f {dummy::void} = 3 | fprintf stderr "Oh yes!\n" 4 | ; 5 | export_to_tcl fl_f; 6 | 7 | let fl_g i {dummy::void} = 8 | fprintf stderr "Well %d!\n" i 9 | ; 10 | export_to_tcl fl_g; 11 | 12 | let fl_h {dummy::void} i = 13 | fprintf stderr "Maybe %d!\n" i 14 | ; 15 | export_to_tcl fl_h; 16 | 17 | 18 | 111111; 19 | tcl_eval ["fl_f {}"]; 20 | 222222; 21 | tcl_eval ["fl_g 1 {}"]; 22 | 333333; 23 | tcl_eval ["fl_h {} 2"]; 24 | 444444; 25 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b231.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "byte" 8; 4 | 5 | ENUM "abc" ["INIT", "READ", "WRITE"]; 6 | 7 | let test = 8 | bit_input clk. 9 | byte_input a b. 10 | abc_input sel. 11 | bit_output out. 12 | byte_internal l1 l2. 13 | byte_internal i1 i2. 14 | CELL "test" [ 15 | out <- (l1 '=' l2) '&' (sel '=' INIT) '|' (sel '=' WRITE), 16 | re_ff clk i1 l1, 17 | re_ff clk i2 l2, 18 | i1 <- a '+' ZX l2, 19 | i2 <- b '&' SX l1 20 | ]; 21 | 22 | let p = test 'clk 'a 'b 'sel 'out; 23 | 24 | IDV p "/tmp/DB_dbg" []; 25 | 26 | //let ckt = pexlif2fsm p; 27 | 28 | 29 | //STE_debug ckt; 30 | 31 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b233.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | let foo = 4 | bit_input a b c. 5 | bit_output o. 6 | CELL "draw_stdcell ABC draw_hier foo" [ 7 | o <- a '&' (b '|' '~' c) 8 | ]; 9 | 10 | let test = 11 | bit_input a b c d e f. 12 | bit_output out. 13 | internal m1 m2. 14 | CELL "test" [ 15 | foo a b c m1, 16 | foo d e f m2, 17 | out <- m1 '&' m2 18 | ]; 19 | 20 | let p = test 'a 'b 'c 'd 'e 'f 'out; 21 | 22 | let ckt = pexlif2fsm p; 23 | ckt; 24 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b234.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | //TYPE "word" 4; 4 | 5 | let foo = 6 | bit_input a b c. 7 | bit_output o. 8 | CELL "draw_stdcell ABC draw_hier foo" [ 9 | o <- a '&' (b '|' '~' c) 10 | ]; 11 | 12 | let test = 13 | bit_input a b c d e f. 14 | bit_output out. 15 | internal m1 m2. 16 | CELL "test" [ 17 | foo a b c m1, 18 | foo d e f m2, 19 | out <- m1 '&' m2 20 | ]; 21 | 22 | let p = test 'a 'b 'c 'd 'e 'f 'out; 23 | 24 | wtime (p fseq 1); 25 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b235.fl: -------------------------------------------------------------------------------- 1 | 2 | letrec fib 0 = 1 3 | /\ fib 1 = 1 4 | /\ fib n = fib (n-1) + fib (n-2) 5 | ; 6 | 7 | let slow n = (system (n fseq "sleep 2")) fseq n; 8 | 9 | letrec fac n = n = 0 => 1 | (slow n)*fac(n-1); 10 | 11 | let choose n c = fac n / (fac (n-c) * fac c); 12 | 13 | wtime (choose 5 3); 14 | 15 | //fib 27; 16 | 17 | //quit; 18 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b236.fl: -------------------------------------------------------------------------------- 1 | 2 | rvariable "a"; 3 | 4 | let f x y = x+y+1; 5 | 6 | slet g x y = x+y+1; 7 | 8 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b237.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "word" 4; 4 | 5 | let bug = 6 | bit_input a. 7 | word_output o. 8 | CELL "bug" [ 9 | o <- SX a 10 | ]; 11 | 12 | let p = (flfun2pexlif bug); 13 | 14 | let ckt = pexlif2fsm p; 15 | 16 | //update_vossrc "VERBOSE-STE-RUN" "YES"; 17 | 18 | let ste = STE "-e" ckt [] [(T, "a", variable "a", 0, 1)] [] []; 19 | 20 | get_trace_val ste "o[3]" 0; 21 | //get_trace ste "o[2]"; 22 | //get_trace ste "o[1]"; 23 | //get_trace ste "o[0]"; 24 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b243.fl: -------------------------------------------------------------------------------- 1 | 2 | let av = bev_variable "a[15:0]"; 3 | let bv = bev_variable "b[15:0]"; 4 | 5 | let tst = 6 | let bv' = IF (bev_eq bv (int2bev 0)) THEN (int2bev 1) ELSE bv in 7 | let ad = av / bv' in 8 | let am = av % bv' in 9 | let new = (ad * bv') + am in 10 | let eq = bev_neq av new in 11 | eq 12 | ; 13 | 14 | bget_model [tst] 2; 15 | 16 | bget_model [tst] 10; 17 | 18 | bget_model [tst] 100; 19 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b244.fl: -------------------------------------------------------------------------------- 1 | load "idv.fl"; 2 | 3 | TYPE "word" 8; 4 | 5 | let tst = 6 | word_input a b c d. 7 | bit_output o1 o2. 8 | word_output o3 o4 o5 o6. 9 | CELL "tst" [ 10 | o1 <- a '<' b, 11 | o2 <- d '<' c, 12 | o3 <- (IF o1 THEN a ELSE b), 13 | o4 <- (IF (c '>=' d) THEN c ELSE d), 14 | o5 <- (a '|' '~' b) '&' b '&' c '&' d, 15 | o6 <- a '|' b '|' c '|' d 16 | ]; 17 | 18 | let p = flfun2pexlif tst; 19 | let ckt = pexlif2fsm p; 20 | 21 | let ste = random_simulation ckt [] [] 100; 22 | ste; 23 | 24 | get_trace ste "o1"; 25 | 26 | limited_get_trace ste 30 40 "o1"; 27 | 28 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b245.fl: -------------------------------------------------------------------------------- 1 | 2 | md_extract_vectors ["a[-1:0]"]; 3 | 4 | md_expand_vector "_abs[1_0][2:0]"; 5 | md_expand_vector "_abs[1_0][5,2:0]"; 6 | 7 | md_extract_vectors ["_abs[1_0][2]", "_abs[1_0][0]", "_abs[1_0][1]"]; 8 | 9 | md_merge_vectors ["_abs[1_0][2]", "_abs[1_0][0]", "_abs[1_0][1]"]; 10 | 11 | md_merge_vectors ["_abs[1_0][2]", "_abs[1_0][1:0]"]; 12 | 13 | md_merge_vectors ["0b0", "0b0"]; 14 | 15 | md_extract_vectors ["0b0", "0b0"]; 16 | 17 | md_merge_vectors ["0b0", "0b1"]; 18 | 19 | md_extract_vectors ["0b0", "0b1"]; 20 | 21 | 22 | md_merge_vectors ["0b01", "0b1"]; 23 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b249.fl: -------------------------------------------------------------------------------- 1 | let q = ref []; 2 | 3 | q := [1]; 4 | deref q; 5 | 6 | q := ["a"] @ (deref q); 7 | deref q; 8 | 9 | {(deref q):: string list}; 10 | {(deref q):: int list}; 11 | {(deref q):: float list}; 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b251.fl: -------------------------------------------------------------------------------- 1 | 2 | rvariable "a"; 3 | 4 | let double i = i+i; 5 | 6 | DBGterm (get_definition "double"); 7 | draw_term (get_definition "double"); 8 | 9 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b257.fl: -------------------------------------------------------------------------------- 1 | 2 | trim "abc"; 3 | 4 | trim " abc"; 5 | 6 | trim " abc"; 7 | 8 | trim " abc"; 9 | 10 | trim "abc "; 11 | 12 | trim " abc "; 13 | 14 | trim " abc "; 15 | 16 | trim " abc "; 17 | 18 | 19 | 20 | gen_trim "{" "}" " {abc} "; 21 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b259.fl: -------------------------------------------------------------------------------- 1 | md_extract_vectors ["a[0]","a[0]_n","a[1]","a[1]_n"]; 2 | md_extract_vectors ["a[0]","a[2]","a[1]"]; 3 | 4 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b26.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let i_inc i = i+1; 7 | let s_inc i = i^"1"; 8 | 9 | open_overload {inc:: *a -> *a} i_inc s_inc; 10 | 11 | help "inc"; 12 | 13 | let double x = inc (inc x); 14 | 15 | help "double"; 16 | 17 | double 12; 18 | double "00"; 19 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b29.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | 8 | let fun1 x = x+1; 9 | let fun2 y = y+2; 10 | let fun3 y = y+3; 11 | 12 | begin_abstype; 13 | 14 | let fun2 y = y-1; 15 | 16 | begin_abstype; 17 | 18 | let fun1 x = x^""; 19 | let fun2 x = x/2; 20 | 21 | let bar x = x*x; 22 | 23 | end_abstype bar; 24 | 25 | fun1 0; 26 | fun2 0; 27 | 28 | end_abstype bar fun2; 29 | 30 | fun1; 31 | fun2; 32 | fun3; 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b31.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let ckt = load_exe "output.exe"; 7 | 8 | let nds = nodes ckt; 9 | 10 | length nds; 11 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b32.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let ckt = load_exe "bugs/z.exe"; 7 | 8 | STE "-e -m 5" ckt [] 9 | [(T,"a",T, 0,10), (T,"b",T, 0,10)] 10 | [] 11 | [("a",0,10),("b",0,10),("_0_[0]",0,10)] 12 | ; 13 | 14 | //get_node_val ckt "_0_[0]"; 15 | //map (get_node_val ckt) (fanin ckt "_0_[0]"); 16 | // 17 | //print_fsm ckt; 18 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b35.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | bvariable "a"; 7 | let f {x::int} = [x]; 8 | 9 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b36.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "bool_arithm.fl"; 7 | 8 | let a = variable_vector "a[5:0]"; 9 | let b = variable_vector "b[5:0]"; 10 | 11 | var_order ((depends a)@(depends b)); 12 | 13 | let res = a ''+'' b; 14 | 15 | draw_bdds T res; 16 | draw_bdds F res; 17 | 18 | 19 | var_order (interleave [(depends a),(depends b)]); 20 | 21 | draw_bdds T res; 22 | draw_bdds F res; 23 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b39.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | cload "bool_u_arithm.fl"; 7 | 8 | // State variables 9 | let cnt = variable_vector "c[15:0]"; 10 | 11 | depends cnt; 12 | 13 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b40.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let a = variable "a"; 7 | let b = variable "b"; 8 | let c = variable "c"; 9 | 10 | let f5 = a OR b OR c; 11 | 12 | f5; 13 | 14 | substitute [ ("a", T), ("b", F), ("c", T) ] f5; 15 | 16 | 17 | let sub = map (\x. (x,rvariable x)) ["a","b","c"]; 18 | 19 | substitute sub f5; 20 | sub; 21 | 22 | substitute sub f5; 23 | 24 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b42.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | lettype tr = BR tr tr | LF int; 7 | 8 | lettype tr2 = 9 | BR1 tr2 tr2 | 10 | LF2 bool | 11 | LF3 int 12 | ; 13 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b43.model: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bin/fl/bugs/b43.model -------------------------------------------------------------------------------- /src/bin/fl/bugs/b5.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let a = bvariable "a"; 7 | let b = bvariable "b"; 8 | let c = bvariable "c"; 9 | 10 | let e1 = a bAND b; 11 | let e2 = bNOT (a bOR b); 12 | let e3 = a bXOR b bAND bNOT a bOR c; 13 | let e4 = (bNOT a) bAND (bNOT b); 14 | let e5 = (bNOT a) bAND b; 15 | let e6 = e4 bXNOR e5; 16 | 17 | "e1"; e1; 18 | "e2"; e2; 19 | "e3"; e3; 20 | "e4"; e4; 21 | "e5"; e5; 22 | "e5"; e6; 23 | 24 | bget_model [e6] 5; 25 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b53.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | let p = read_pexlif (DIR^"/b53.pexlif"); 9 | 10 | //pexlif2fsm p; 11 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b55.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | letrec deep n = 7 | n = 0 => 1 | 8 | n * (deep (n-1)) + n 9 | ; 10 | 11 | "111111"; deep 100; 12 | "222222"; deep 1000; 13 | "333333"; deep 1999; 14 | //"333333"; deep 9998; 15 | //"444444"; deep 10000; 16 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b58.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | //var_order []; 7 | 8 | let a = variable "a"; 9 | let b = variable "b"; 10 | let c = variable "c"; 11 | let d = variable "d"; 12 | 13 | a; 14 | b; 15 | c; 16 | d; 17 | 18 | var_order []; 19 | 20 | let e = a AND c OR b AND d; 21 | e; 22 | let e' = bdd_current2next e; 23 | e'; 24 | var_order []; 25 | bdd_size e; 26 | bdd_reorder 1; 27 | var_order []; 28 | bdd_size e; 29 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b60.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | itlist; 8 | 9 | 1 - -23; 10 | 1.0 - -2.3; 11 | 2.3-1.2; 12 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b61.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | // Testing LP 7 | 8 | 9 | // Feasible solution (exactly one solution: x1=1, x2=1, and x3=1) 10 | LP [ 11 | ([1, 1, 1], "<=", 3), 12 | ([1, 1, 0], ">=", 2), 13 | ([0, 0, 1], ">=" , 1) 14 | ]; 15 | 16 | // Infeasible 17 | LP [ 18 | ([1, 1, 1], "<=", 3), 19 | ([1, 1, 0], ">=", 2), 20 | ([0, 0, 1], ">" , 1) 21 | ]; 22 | 23 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b62.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | // Testing LPsol 7 | 8 | 9 | // Feasible solution (x1 + x2 = 2, x3=1) 10 | LPsol [ 11 | ([1, 1, 1], "<=", 3), 12 | ([1, 1, 0], ">=", 2), 13 | ([0, 0, 1], ">=" , 1) 14 | ]; 15 | 16 | // Infeasible 17 | LPsol [ 18 | ([1, 1, 1], "<=", 3), 19 | ([1, 1, 0], ">=", 2), 20 | ([0, 0, 1], ">" , 1) 21 | ]; 22 | 23 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b64.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let l = [1,2,3,4,5,6,7,8,9]; 8 | 9 | el 1 l; 10 | 11 | el 8 l; 12 | 13 | let er1 = el 10 l; 14 | let er2 = el 0 l; 15 | 16 | let ll = 1--50000; 17 | 18 | el 32000 ll; 19 | 20 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b67.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | VARS "a b c"; 7 | 8 | let e = (a = b) AND (a != c); 9 | 10 | e; 11 | 12 | truth_cover ["a","b", "c"] e; 13 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b69.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | !a. a; 7 | 8 | !a b. a XOR b; 9 | 10 | !a b. ?c d. (a XOR b) OR (c = d); 11 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b72.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 1,3.2; 7 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b74.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let d x = x+x; // d is an implicitly overloaded function 7 | let s x = x^x; // s is a simple function 8 | let e = d 1; 9 | overload qq d s; 10 | rvariable "a"; 11 | qq "a"; 12 | qq 1; 13 | qq 2.1; 14 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b75.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let pf a b = (a,b); 7 | let lf a b = [a,b]; 8 | overload f pf lf; 9 | 10 | let iadd a b = a+b+0; 11 | 12 | rvariable "a"; 13 | val (a,b) = f 1 2 in iadd a b; 14 | 15 | hd (f 1 2) + 1; 16 | fst (f "a" "b") = "a"; 17 | 18 | //hd (f 1 2); 19 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b79.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | let do_load file = (cload (sprintf "%s/%s" DIR file)) fseq (); 7 | foreach do_load [ 8 | "b79b.fl" 9 | ]; 10 | 11 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b79b.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let f x y = 8 | y + (undefined_fun x) 9 | ; 10 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/b81.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | load "ste.fl"; 7 | 8 | rvariable "a"; 9 | 10 | letrec write_rec addr di {[]:: *a list} i = {[]:: *a list} 11 | /\ write_rec addr di {(l:ls):: *a list} i = 12 | let rem = {write_rec addr di ls (i+1):: *a list} then 13 | let t_l = di:rem then 14 | let e_l = l:rem then 15 | IF ( addr '=' `i ) THEN t_l ELSE e_l 16 | ; 17 | 18 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/ex1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bin/fl/bugs/ex1.jpg -------------------------------------------------------------------------------- /src/bin/fl/bugs/m6502/M65C02_BCD.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bin/fl/bugs/m6502/M65C02_BCD.v -------------------------------------------------------------------------------- /src/bin/fl/bugs/mux2.v: -------------------------------------------------------------------------------- 1 | module mux2( 2 | din_0, 3 | din_1, 4 | sel, 5 | mux_out 6 | ); 7 | input din_0, din_1, sel; 8 | output mux_out; 9 | reg mux_out; 10 | 11 | assign mux_out = (sel) ? din_1 : din_0; 12 | 13 | endmodule 14 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/output.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bin/fl/bugs/output.exe -------------------------------------------------------------------------------- /src/bin/fl/bugs/small.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * small_xpm[] = { 3 | "8 8 3 1", 4 | " c None", 5 | ". c #C8262B", 6 | "+ c #FDFDFA", 7 | " ", 8 | " +++ ", 9 | " + . + ", 10 | " +++++ ", 11 | " +.+.+ ", 12 | " +...+ ", 13 | " +++ ", 14 | " "}; 15 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/test_verilog_Db3Qb7/script.ys: -------------------------------------------------------------------------------- 1 | read_verilog -I. /tmp/voss2_mararon_rp0d9v/test_verilog_Db3Qb7/test.v 2 | hierarchy -check -top test 3 | proc; opt 4 | rename -enumerate -pattern TmP_% 5 | opt 6 | write_pexlif -noalias -icells -gates -impltf _out.fl 7 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/test_verilog_Db3Qb7/test.v: -------------------------------------------------------------------------------- 1 | module test ( 2 | input wire [1 : 0] in1, 3 | output wire out1 4 | ); 5 | test_1 anon_1(.in1(in1[1:0]), .out1(out1)); 6 | endmodule 7 | module test_1 ( 8 | input wire [1 : 0] in1, 9 | output wire out1 10 | ); 11 | wire [1 : 0] i1; 12 | assign i1 = {{1{0}}, in1[1]} && (~(in1[1:0])); 13 | assign out1 = (~(i1[1])) > (X) || in1[1]; 14 | endmodule 15 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/z.blif: -------------------------------------------------------------------------------- 1 | .model z 2 | .inputs a b 3 | .outputs o 4 | .names a b _0_[0] 5 | 11 1 6 | .names _0_[0] o 7 | 0 1 8 | .end 9 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/z.del: -------------------------------------------------------------------------------- 1 | $VSS |1 1 1 1| 2 | $VDD |1 1 1 1| 3 | $DONT_CARE |1 1 1 1| 4 | a |1 1 1 1| 5 | b |1 1 1 1| 6 | o |1 1 1 1| 7 | _0_[0] |1 1 1 1| 8 | -------------------------------------------------------------------------------- /src/bin/fl/bugs/z.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/bin/fl/bugs/z.exe -------------------------------------------------------------------------------- /src/bin/fl/find_undoc_funs.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | 7 | let all_funs = get_matching_functions "*" "*" "*" "*" 10000; 8 | 9 | let is_undoc fun = 10 | ( 11 | let txt = help fun then 12 | str_is_substr "File: builtin" txt 13 | ) catch T 14 | ; 15 | 16 | let missing = filter is_undoc all_funs; 17 | 18 | length missing; 19 | 20 | list2str T "\n" "\n" "\n" id missing; 21 | -------------------------------------------------------------------------------- /src/bin/fl/g: -------------------------------------------------------------------------------- 1 | set pagination off 2 | break exit 3 | break abort 4 | break Dbg_stop 5 | r -noX -f bugs/b263.fl 6 | -------------------------------------------------------------------------------- /src/bin/fl/gg: -------------------------------------------------------------------------------- 1 | set pagination off 2 | break Rand_Var 3 | r -noX -f bugs/b194.fl 4 | set dbg_my_stop = 1 5 | break nbr_succ_overload_res 6 | c 7 | -------------------------------------------------------------------------------- /src/bin/fl/main.cc: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | #include 7 | 8 | extern "C" int fl_main(int argc, char *argv[]); 9 | 10 | int 11 | main(int argc, char *argv[]) 12 | { 13 | fl_main(argc, argv); 14 | } 15 | -------------------------------------------------------------------------------- /src/bin/fl/make_prefs.tcl: -------------------------------------------------------------------------------- 1 | ;######################################################################### 2 | ;# Copyright 2020 Carl-Johan Seger 3 | ;# SPDX-License-Identifier: Apache-2.0 4 | ;######################################################################### 5 | 6 | set DIR [file dirname [file normalize [info script]]] 7 | source $DIR/prefs.tcl 8 | generate_C_datatype; 9 | -------------------------------------------------------------------------------- /src/bin/fl/scripts/.gitignore: -------------------------------------------------------------------------------- 1 | template 2 | -------------------------------------------------------------------------------- /src/bin/fl/scripts/Makefile: -------------------------------------------------------------------------------- 1 | 2 | template: ../voss_strings.h ../fsm.h ../table.h mk_serialize.awk 3 | cat ../voss_strings.h ../fsm.h ../table.h | gawk -f mk_serialize.awk > template 4 | 5 | clean: 6 | @-/bin/rm template 7 | 8 | -------------------------------------------------------------------------------- /src/bin/fl/x.fl: -------------------------------------------------------------------------------- 1 | tcl_eval [ 2 | "label .l -text {Hiiiii}", 3 | "button .b -text Ok -command {destroy .}", 4 | "pack .l", 5 | "pack .b", 6 | "update"] [] 7 | ; 8 | -------------------------------------------------------------------------------- /src/bin/fl/x.tcl: -------------------------------------------------------------------------------- 1 | toplevel .foo 2 | label .foo.l -text "Hiiiii000000" 3 | button .foo.b -text Ok -command {destroy .foo} 4 | pack .foo.l 5 | pack .foo.b 6 | update 7 | -------------------------------------------------------------------------------- /src/bin/functor/Makefile: -------------------------------------------------------------------------------- 1 | 2 | functor: lex.yy.c 3 | $(CC) $(DEBUG_FLAG) $(OPTIMIZATION_FLAG) $(LINKFLAG) -o functor lex.yy.c 4 | 5 | lex.yy.c: lexer 6 | flex lexer 7 | 8 | clean: 9 | @-/bin/rm -f lex.yy.c functor 10 | -------------------------------------------------------------------------------- /src/bin/functor/tst: -------------------------------------------------------------------------------- 1 | let foo x = fprintf stderr "A nice %d letters" (`sz`+x) seq `sz`; 2 | let bar y = foo `sz` + 4; 3 | -------------------------------------------------------------------------------- /src/bin/ignore_signals/Makefile: -------------------------------------------------------------------------------- 1 | 2 | ignore_signals: ignore_signals.c 3 | cc $(LINKFLAG) -o ignore_signals ignore_signals.c 4 | 5 | 6 | install: ignore_signals 7 | 8 | 9 | clean: 10 | @-/bin/rm -f ignore_signals 11 | -------------------------------------------------------------------------------- /src/doc/fl/.gitignore: -------------------------------------------------------------------------------- 1 | *.tex 2 | *.aux 3 | *.idx 4 | *.log 5 | *.toc 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0001.fl: -------------------------------------------------------------------------------- 1 | 2+3; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0001.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0002.fl: -------------------------------------------------------------------------------- 1 | 12 > 5 => 2+3 | 2-3; 2 | it; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0002.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0003.fl: -------------------------------------------------------------------------------- 1 | 123456789*9876543210; 2 | -121/10; 3 | 2**256; 4 | 2**500 % 17; 5 | ((2**500 % 17) % 7) < 3; 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0003.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0004.fl: -------------------------------------------------------------------------------- 1 | let double x = x+x; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0004.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0005.fl: -------------------------------------------------------------------------------- 1 | double 12; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0005.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0005.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0006.fl: -------------------------------------------------------------------------------- 1 | 1.0; 2 | .34; 3 | -1.73e-12; 4 | 1.0 / 2.0; 5 | sin(pi*45.0/180.0); 6 | round(-3.7); 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0006.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0006.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0007.fl: -------------------------------------------------------------------------------- 1 | variable "q"; 2 | VARS "a b c[3:0] d[1:0][2:0]"; 3 | a; 4 | b; 5 | c; 6 | d; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0007.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0007.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0008.fl: -------------------------------------------------------------------------------- 1 | let v = variable "v"; 2 | v=v; 3 | variable "v" = variable"v"; 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0008.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0008.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0009.fl: -------------------------------------------------------------------------------- 1 | let e1 = a XOR b; 2 | let e2 = a OR b; 3 | // Not the same function 4 | e1 == e2; 5 | // Under what conditions is e1 equal to e2. 6 | e1 = e2; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0009.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0009.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0010.fl: -------------------------------------------------------------------------------- 1 | VARS "q[2:0] r[2:0]"; 2 | // Force creation 3 | q fseq r fseq (); 4 | // Order the variables sequentially 5 | var_order ((md_expand_vector "q[2:0]")@(md_expand_vector "r[2:0]")); 6 | draw_bdds T [q = r]; 7 | // Order the variables by interleaving them MSB to LSB 8 | var_order (interleave [(md_expand_vector "q[3:0]"), 9 | (md_expand_vector "r[3:0]")]) 10 | ; 11 | draw_bdds T [q = r]; 12 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0010.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0011.fl: -------------------------------------------------------------------------------- 1 | let e1 = a XOR b; 2 | // If-then-else with symbolic condition. 3 | e1 => a | b; 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0011.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0011.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0012.fl: -------------------------------------------------------------------------------- 1 | a => (1,[b]) | (1,[a]); 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0012.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0013.fl: -------------------------------------------------------------------------------- 1 | a => (1,[b]) | (2,[a]); 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0013.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0013.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0014.fl: -------------------------------------------------------------------------------- 1 | let v1 = int2bv 3; 2 | let v2 = int2bv 12; 3 | let res = a => v1 | v2; 4 | res; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0014.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0014.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0015.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0015.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0016.fl: -------------------------------------------------------------------------------- 1 | !a. ?b. (a XOR b); 2 | let a = variable "a"; let b = variable "b"; let c = variable "c"; 3 | a AND b OR c; 4 | Quant_forall ["a"] (a AND b OR c); 5 | Quant_thereis ["a","c"] (a AND b OR c); 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0016.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0016.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0017.fl: -------------------------------------------------------------------------------- 1 | let v s = variable s; 2 | let a = v "a"; let b = v "b"; let c = v "c"; let d = v "d"; 3 | let ex = (a AND NOT b); 4 | ex; 5 | let nex = ex AND (a=c) AND (b=d); 6 | Quant_thereis ["a","b"] nex; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0017.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0017.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0018.fl: -------------------------------------------------------------------------------- 1 | VARS "a b c d"; 2 | let e = [(1,[a AND b XOR c]), (2,[T,T,a,b, d])]; 3 | e; 4 | substitute [("a",T),("b",F),("c",F),("d",F)] e; 5 | substitute [("a",b),("b",a)] e; 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0018.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0018.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0019.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0019.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0020.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0021.fl: -------------------------------------------------------------------------------- 1 | VARS "a b s[2:0]"; 2 | param (a AND b); 3 | param (a OR b); 4 | 5 | // Note that this is a state vector that only takes on values 6 | // that are in the final_image and that all states in final_image 7 | // has some assignment to the variables. 8 | substitute (param final_image) s; 9 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0021.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0022.fl: -------------------------------------------------------------------------------- 1 | let a = bvariable "a"; 2 | let b = bvariable "b"; 3 | let c = bvariable "c"; 4 | 5 | let ex0 = bNOT (a bAND b); 6 | ex0; 7 | 8 | let ex1 = bNOT a bOR bNOT (b bAND (c bOR (b bAND bNOT c))); 9 | ex1; 10 | 11 | let ex2 = bNOT a bOR bNOT (b bAND (c bOR (bNOT b bAND c))); 12 | ex2; 13 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0022.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0022.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0023.fl: -------------------------------------------------------------------------------- 1 | let model = bget_model [(ex0 bXOR ex1)] 10; 2 | // No model exists when ex0 and ex1 are different (i.e., ex0 == ex1) 3 | model; 4 | 5 | let model = bget_model [(ex0 bXOR ex2)] 10; 6 | // A model is found 7 | model; 8 | 9 | bsubstitute model ex0; 10 | bsubstitute model ex2; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0023.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0024.fl: -------------------------------------------------------------------------------- 1 | 2 | let q = "abc and _12!@@#"; 3 | let qq = "qw\"q qw"; 4 | q^qq; 5 | explode q; 6 | implode ["1", "2"]; 7 | filter (str_is_prefix "a") ["abc", "Ava", "vad", "bbAb", "aaa"]; 8 | filter (str_is_suffix "a") ["abc", "Ava", "vad", "bbAb", "aaa"]; 9 | filter (str_match "*a*") ["abc", "Ava", "vad", "bbAb", "aaa"]; 10 | qsort strcmp ["abc", "Ava", "vad", "bbAb", "aaa"]; 11 | let s = "A funny story often told is the story of"; 12 | strlen s; 13 | strstr s "is"; 14 | substr s 1 25; 15 | substr s 26 (-1); 16 | sprintf "%s: %032b (%d)" "abc" 1423 1423; 17 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0024.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0025.fl: -------------------------------------------------------------------------------- 1 | let conv i = sprintf "%0*b is the same as %x or %d\n" 16 i i i; 2 | conv 2; 3 | conv 142; 4 | conv (-142); 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0025.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0025.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0026.fl: -------------------------------------------------------------------------------- 1 | sscanf "(%d,%04b)-->%x" "(12,1101)-->4f"; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0026.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0026.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0027.fl: -------------------------------------------------------------------------------- 1 | let x = 3+3; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0027.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0027.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0028.fl: -------------------------------------------------------------------------------- 1 | let y = let x = 4 in x-5; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0028.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0028.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0029.fl: -------------------------------------------------------------------------------- 1 | let x = 2; 2 | let y = let x = 4 in x-5; 3 | x; 4 | y; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0029.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0029.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0030.fl: -------------------------------------------------------------------------------- 1 | let x = 2; 2 | let y = x*5; 3 | let x = 12; 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0030.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0030.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0031.fl: -------------------------------------------------------------------------------- 1 | let top_level q = 2 | val (i,b) = q in 3 | i < 3 => b | F 4 | ; 5 | top_level (12,variable "a"); 6 | top_level (-2,variable "a"); 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0031.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0031.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0032.fl: -------------------------------------------------------------------------------- 1 | val (a:b:rest) = [1,2,3,4,5]; 2 | a; 3 | b; 4 | rest; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0032.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0032.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0033.fl: -------------------------------------------------------------------------------- 1 | let f x = x+2; 2 | f 4; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0033.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0033.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0034.fl: -------------------------------------------------------------------------------- 1 | let add x y = x+2*y; 2 | add 1 4; 3 | let f = add 1; 4 | f 4; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0034.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0034.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0035.fl: -------------------------------------------------------------------------------- 1 | let add (x,y) = x+2*y; 2 | add (3,4); 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0035.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0035.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0036.fl: -------------------------------------------------------------------------------- 1 | let manhat_dist (x1,y1) (x2,y2) = (x2-x1, y2-y1); 2 | manhat_dist (1,1) (3,5); 3 | let geometric_dist (x1,y1) (x2,y2) = sqrt ( (pow 2.0 (x1-x2)) + (pow 2.0 (y1-y2))); 4 | geometric_dist (1.0,1.0) (3.0,5.0); 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0036.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0036.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0037.fl: -------------------------------------------------------------------------------- 1 | let manhat_dist (x1,y1) (x2,y2) = (x2-x1, y2-y1); 2 | (5, manhat_dist (1,2)); 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0037.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0037.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0038.fl: -------------------------------------------------------------------------------- 1 | let fact n = n=0 => 1 | n*fact (n-1); 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0038.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0038.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0039.fl: -------------------------------------------------------------------------------- 1 | let f n = n+1; 2 | let f n = n=0 => 1 | n*f (n-1); 3 | f 3; 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0039.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0039.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0040.fl: -------------------------------------------------------------------------------- 1 | letrec fact n = n=0 => 1 | n*fact (n-1); 2 | fact 5; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0040.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0040.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0041.fl: -------------------------------------------------------------------------------- 1 | forward_declare {Male:: int-> int}; 2 | 3 | letrec Female 0 = 1 4 | /\ Female n = n - Male (Female (n-1)) 5 | ; 6 | 7 | letrec Male 0 = 0 8 | /\ Male n = n - Female (Male (n-1)) 9 | ; 10 | 11 | Female 10; 12 | 13 | map Male (1--20); 14 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0041.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0041.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0042.fl: -------------------------------------------------------------------------------- 1 | // Original version 2 | letrec fib 1 = 1 3 | /\ fib 2 = 1 4 | /\ fib n = fib (n-1) + fib (n-2) 5 | ; 6 | 7 | time (fib 30); 8 | 9 | // Memoized version 10 | cletrec fib 1 = 1 11 | /\ fib 2 = 1 12 | /\ fib n = fib (n-1) + fib (n-2) 13 | ; 14 | 15 | time (fib 30); 16 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0042.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0042.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0043.fl: -------------------------------------------------------------------------------- 1 | let q = ((1,2),3); 2 | let qq = (1,2,3); 3 | q; 4 | qq; 5 | let qqq = (1,"abc"); 6 | qqq; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0043.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0043.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0044.fl: -------------------------------------------------------------------------------- 1 | let l = [1,2,3,3,2,1,2]; 2 | hd l; 3 | tl l; 4 | 0:l; 5 | length l; 6 | letrec odd_even (a:b:rem) = 7 | val (r_odd, r_even) = odd_even rem then 8 | (a:r_odd), (b:r_even) 9 | /\ odd_even [a] = [a],[] 10 | /\ odd_even [] = [], [] 11 | ; 12 | val (odd,even) = odd_even (1--20); 13 | odd; 14 | even; 15 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0044.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0044.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0045.fl: -------------------------------------------------------------------------------- 1 | let l1 = 1 upto 8; 2 | let l2 = 13 downto 1; 3 | let l3 = 1--100; 4 | l1 @ l2; 5 | lastn 5 l1; 6 | butlast l2; 7 | firstn 7 l3; 8 | butfirstn 96 l3; 9 | cluster 4 (1--20); 10 | let ll = [l1, l2, [4,8,12]]; 11 | flat ll; 12 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0045.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0045.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0046.fl: -------------------------------------------------------------------------------- 1 | hd [1,2,3]; 2 | hd ["abc", "edf"]; 3 | (hd ["a", "b"]), hd [4,2,1]; 4 | let q = [T,T,F]; 5 | hd q; 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0046.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0046.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0047.fl: -------------------------------------------------------------------------------- 1 | let f x = hd x; 2 | 3 | letrec map2 fn [] [] = [] 4 | /\ map2 fn (a:as) (b:bs) = (fn a b) : (map2 fn as bs) 5 | /\ map2 fn _ _ = error "Lists of different length in map2" 6 | ; 7 | 8 | letrec fact n = n=0 => 1 | n*fact (n-1); 9 | let binom n k = (fact n) / ((fact k) * (fact (n-k))); 10 | map2 binom [8,8,8,8,8,8,8,8,8] [0,1,2,3,4,5,6,7,8]; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0047.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0047.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0048.fl: -------------------------------------------------------------------------------- 1 | let capitalize s = (chr ((ord (string_hd s))+(ord "A")-(ord "a")))^(string_tl s); 2 | let classify name type = sprintf "%s is a %s" (capitalize name) type; 3 | map2 classify ["john", "anna", "betsy", "bob"] ["boy","girl","girl","boy"]; 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0048.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0049.fl: -------------------------------------------------------------------------------- 1 | let null l = l = []; 2 | let f x y = null x OR null y; 3 | f [1,2,3] ["abc", "cdef"]; 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0049.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0049.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0050.fl: -------------------------------------------------------------------------------- 1 | let f x y = 2 | let null l = l = [] in 3 | null x OR null y 4 | ; 5 | f [1,2,3] ["abc", "cdef"]; 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0050.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0050.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0051.fl: -------------------------------------------------------------------------------- 1 | let ihd {l::int list} = hd l; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0051.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0051.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0052.fl: -------------------------------------------------------------------------------- 1 | let iplus {a::int} {b::int} = a+b; 2 | let splus {a::string} {b::string} = a^b; 3 | overload + iplus splus; 4 | let foo a b = a OR b; 5 | overload + + foo; 6 | infix 2 +; 7 | 1+2; 8 | "a"+"bc"; 9 | T+F; 10 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0052.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0052.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0053.fl: -------------------------------------------------------------------------------- 1 | let f x y z = x+y+z; 2 | f 1 2 3; 3 | f "a" "b" "s"; 4 | f F F T; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0053.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0053.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0054.fl: -------------------------------------------------------------------------------- 1 | let f {x:: *a} {y:: *a} {z:: *a} = {x+y+z:: *a}; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0054.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0054.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0055.fl: -------------------------------------------------------------------------------- 1 | \x.x+1; 2 | let q = \x.x+1; 3 | q 1; 4 | map (\x.x*x) [1,2,3,4,5]; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0055.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0055.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0056.fl: -------------------------------------------------------------------------------- 1 | hd(tl [2]); 2 | 1/0; 3 | error "My message"; 4 | let select idx l = 5 | idx < 1 OR idx > length l => 6 | eprintf "select called with illegal index (%d)" idx 7 | | 8 | el idx l 9 | ; 10 | select 10 [1,2,3,4]; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0056.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0056.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0057.fl: -------------------------------------------------------------------------------- 1 | let half x = (x % 2) = 1 => eprintf "HALF_ERR: f2 is given an odd number (%d)" x 2 | | x/2 3 | ; 4 | letrec robust_half x = 5 | (half x) gen_catch 6 | (\msg. str_is_prefix "HALF_ERR" msg => robust_half (x+1) | error msg) 7 | ; 8 | 9 | robust_half 2; 10 | robust_half 3; 11 | robust_half (1/0); 12 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0057.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0057.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0058.fl: -------------------------------------------------------------------------------- 1 | new_type_abbrev pair = int#int; 2 | let p = (1,2); 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0058.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0058.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0059.fl: -------------------------------------------------------------------------------- 1 | lettype card = king | queen | jack | other int; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0059.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0059.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0060.fl: -------------------------------------------------------------------------------- 1 | king; 2 | other 9; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0060.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0060.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0061.fl: -------------------------------------------------------------------------------- 1 | let pr_card king = "K" 2 | /\ pr_card queen = "Q" 3 | /\ pr_card jack = "J" 4 | /\ pr_card (other n) = int2str n; 5 | pr_card king; 6 | pr_card queen; 7 | pr_card jack; 8 | pr_card (other 5); 9 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0061.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0061.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0062.fl: -------------------------------------------------------------------------------- 1 | install_print_function pr_card; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0062.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0062.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0063.fl: -------------------------------------------------------------------------------- 1 | letrec collatz 1 = [1] 2 | /\ collatz n assuming (n % 2 = 0) = n:(collatz (n/2)) 3 | /\ collatz n assuming (n % 2 = 1) = n:(collatz (3*n+1)) 4 | ; 5 | collatz 7; 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0063.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0063.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0064.fl: -------------------------------------------------------------------------------- 1 | lettype IExpr = Ivar string | Plus IExpr IExpr | ITE BExpr IExpr IExpr 2 | andlettype BExpr = And BExpr BExpr | GEQ IExpr IExpr; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0064.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0064.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0065.fl: -------------------------------------------------------------------------------- 1 | let prIExpr prBexpr expr = 2 | letrec prIExpr (Ivar s) = s 3 | /\ prIExpr (Plus a b) = (prIExpr a)^" + "^(prIExpr b) 4 | /\ prIExpr (ITE c t e) = "if "^(prBexpr c)^" then "^ 5 | (prIExpr t)^" else "^(prIExpr e) in 6 | prIExpr expr 7 | ; 8 | letrec prBExpr (And a b) = (prBExpr a) ^ " AND " ^ (prBExpr b) 9 | /\ prBExpr (GEQ a b) = (prIExpr prBExpr a)^" >= "^ 10 | (prIExpr prBExpr b) 11 | ; 12 | let prIExpr e = prIExpr prBExpr e; 13 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0065.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0065.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0066.fl: -------------------------------------------------------------------------------- 1 | forward_declare {prBexpr::BExpr->string}; 2 | letrec prIExpr (Ivar s) = s 3 | /\ prIExpr (Plus a b) = (prIExpr a)^" + "^(prIExpr b) 4 | /\ prIExpr (ITE c t e) = "if "^(prBexpr c)^" then "^ 5 | (prIExpr t)^" else "^(prIExpr e) 6 | ; 7 | letrec prBExpr (And a b) = (prBExpr a) ^ " AND " ^ (prBExpr b) 8 | /\ prBExpr (GEQ a b) = (prIExpr a)^" >= "^ (prIExpr b) 9 | ; 10 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0066.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0066.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0067.fl: -------------------------------------------------------------------------------- 1 | 2 | lettype expr = E_FORALL string expr | 3 | E_VAR string | 4 | E_TRUE | 5 | E_AND expr expr | 6 | E_NOT expr 7 | ; 8 | 9 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0067.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0067.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0068.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0068.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0069.fl: -------------------------------------------------------------------------------- 1 | 2 | let ~ e = E_NOT e; 3 | prefix 0 ~; 4 | let && a b = E_AND a b; 5 | infix 4 &&; 6 | let || a b = E_NOT (E_AND (E_NOT a) (E_NOT b)); 7 | infix 3 ||; 8 | let forall fn s = E_FORALL s (fn (E_VAR s)); 9 | binder forall; 10 | let thereis fn s = E_NOT (E_FORALL s (E_NOT (fn (E_VAR s)))); 11 | binder thereis; 12 | let ^^ a b = ~a && ~b || a && b; 13 | infix 4 ^^; 14 | 15 | // Example 16 | let e = forall a b. thereis c. ~(a^^b) || ~(a^^(c^^b)); 17 | 18 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0069.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0069.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0070.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0070.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0071.fl: -------------------------------------------------------------------------------- 1 | 2 | let e = forall a b. thereis c. ~(a^^b) || ~(a^^(c^^b)); 3 | is_taut e; 4 | let f = thereis c. forall a b. ~(a^^b) || ~(a^^(c^^b)); 5 | is_taut f; 6 | let g = forall a b c. ~(a^^b) || ~(a^^(c^^b)); 7 | is_taut g; 8 | 9 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0071.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0071.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0072.fl: -------------------------------------------------------------------------------- 1 | 2 | lettype expr = Val int | 3 | Mult expr expr | 4 | Plus expr expr | 5 | Negate expr; 6 | letrec eval (Val i) = i 7 | /\ eval (Mult e1 e2) = (eval e1) * (eval e2) 8 | /\ eval (Plus e1 e2) = (eval e1) + (eval e2) 9 | /\ eval (Negate e1) = 0-(eval e1) 10 | ; 11 | let ** a b = Mult a b; 12 | let ++ a b = Plus a b; 13 | infix 4 **; 14 | infix 3 ++; 15 | let ' i = Val i; 16 | prefix 0 '; 17 | let q = '1 ++ Negate '2 ** Negate '4; 18 | eval q; 19 | 20 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0072.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0072.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0073.fl: -------------------------------------------------------------------------------- 1 | 2 | let ns i = 1000*i; 3 | postfix ns; 4 | let to a b = (a,b); 5 | infix 3 to; 6 | 2 ns to 4 ns; 7 | 8 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0073.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0073.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0074.fl: -------------------------------------------------------------------------------- 1 | 2 | // Syntactic sugaring 3 | let forall fn s = E_FORALL s (fn (E_VAR s)); 4 | binder forall; 5 | let ' v = E_VAR v; 6 | free_binder '; 7 | let && = E_AND; 8 | infix 4 &&; 9 | let || a b = E_NOT (E_AND (E_NOT a) (E_NOT b)); 10 | infix 3 ||; 11 | 12 | 'a && 'b; 13 | 14 | forall a b c. a || b && c; 15 | 16 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0074.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0074.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0075.fl: -------------------------------------------------------------------------------- 1 | // Read the old value 2 | get_vossrc "DYNAMIC-ORDERING"; 3 | // Update the value 4 | update_vossrc "DYNAMIC-ORDERING" "NO"; 5 | // Read the new value 6 | get_vossrc "DYNAMIC-ORDERING"; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0075.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0075.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0076.fl: -------------------------------------------------------------------------------- 1 | let cnt_r = ref 1; 2 | 3 | letrec fib 1 = 1 4 | /\ fib 2 = 1 5 | /\ fib n = 6 | (cnt_r := (deref cnt_r + 1)) fseq 7 | fib (n-1) + fib (n-2) 8 | ; 9 | 10 | cnt_r := 0; 11 | fib 20; 12 | deref cnt_r; 13 | 14 | cletrec mfib 1 = 1 15 | /\ mfib 2 = 1 16 | /\ mfib n = 17 | (cnt_r := (deref cnt_r + 1)) fseq 18 | mfib (n-1) + mfib (n-2) 19 | ; 20 | 21 | cnt_r := 0; 22 | mfib 20; 23 | deref cnt_r; 24 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0076.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0076.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0077.fl: -------------------------------------------------------------------------------- 1 | let t0 = tbl_create 10; 2 | t0; 3 | let t1 = tbl_insert t0 1 11; 4 | t1; 5 | let t2 = tbl_insert t1 2 11; 6 | t2; 7 | tbl_get t2 1; 8 | tbl_get t2 2; 9 | // Note!!! 10 | tbl_get t1 2; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0077.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0077.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0078.fl: -------------------------------------------------------------------------------- 1 | let pr name = fprintf stderr "We have now reached: %s\n" name; 2 | 3 | letrec fac n = 4 | ((n % 2 = 0) => pr "Even" | pr "Odd") fseq 5 | n = 0 => 1 | n* fac (n-1) 6 | ; 7 | 8 | fac 7; 9 | fac 11; 10 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0078.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0078.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0079.fl: -------------------------------------------------------------------------------- 1 | let pr name = fprintf stderr "We have now reached: %s\n" name; 2 | 3 | letrec fac n = 4 | ((n % 2 = 0) => pr (n seq "Even") | pr (n seq "Odd")) fseq 5 | n = 0 => 1 | n* fac (n-1) 6 | ; 7 | 8 | fac 7; 9 | fac 11; 10 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0079.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0079.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0080.fl: -------------------------------------------------------------------------------- 1 | let pr name = fprintf stderr "We have now reached: %s\n" name; 2 | non_lazy pr; 3 | 4 | letrec fac n = 5 | ((n % 2 = 0) => pr "Even" | pr "Odd") fseq 6 | n = 0 => 1 | n* fac (n-1) 7 | ; 8 | 9 | fac 7; 10 | fac 11; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0080.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0080.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0081.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0081.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0082.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0082.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0083.fl: -------------------------------------------------------------------------------- 1 | int2bv 1; 2 | int2bv (-1); 3 | int2bv 12; 4 | int2bv (-12); 5 | bv2int (int2bv (-12)); 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0083.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0083.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0084.fl: -------------------------------------------------------------------------------- 1 | { '1 :: bv}; 2 | { '-12 :: bv}; 3 | letrec {pow2:: bv -> bv} n = (n = '0) => '1 | '2 * pow2 (n - '1); 4 | pow2 '6; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0084.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0084.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0085.fl: -------------------------------------------------------------------------------- 1 | letrec {pow2:: *a -> *a} n = (n = '0) => '1 | '2 * pow2 (n - '1); 2 | pow2 3; 3 | pow2 {'3::int}; 4 | pow2 {'3.0::float}; 5 | pow2 {'3::bv}; 6 | pow2 {'3::bev}; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0085.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0085.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0086.fl: -------------------------------------------------------------------------------- 1 | bv_variable "a[7:0]"; 2 | bv_variable "a[1:0][3:0]"; 3 | bv_constrained_variable "a[7:0]" (\v. '0 < v AND v < '10); 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0086.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0086.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0087.fl: -------------------------------------------------------------------------------- 1 | bv_constrained_variable "a[8:0]" (\v. v >= '0); 2 | bv_ZX (bv_variable "a[7:0]"); 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0087.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0087.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0088.fl: -------------------------------------------------------------------------------- 1 | bv2list (int2bv (-12)); 2 | list2bv [F,F,F,T,T]; 3 | fixed_bv2list 16 F '-3; 4 | fixed_bv2list 16 T '-3; 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0088.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0088.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0089.fl: -------------------------------------------------------------------------------- 1 | // Return an integer n if its collatz sequence is longer than n. 2 | // Otherwise, return 0 3 | let {large_collatz:: bv -> bv} n = 4 | letrec collatz cnt cur = cur = '1 => cnt | 5 | (cur % '2) = '1 => collatz (cnt + '1) ('3 * cur + '1) 6 | | collatz (cnt + '1) (cur / '2) 7 | in 8 | let res = collatz '0 n in 9 | n < res => n | '0 10 | ; 11 | 12 | // Try this for integers between 1 and 99. 13 | let res = 14 | large_collatz (bv_constrained_variable "a[7:0]" (\v. '1 <= v AND v < '100)) 15 | ; 16 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0089.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0089.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0090.fl: -------------------------------------------------------------------------------- 1 | res; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0090.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0090.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0091.fl: -------------------------------------------------------------------------------- 1 | // Print out (at most) 100 examples. 2 | bv_examples 100 res; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0091.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0091.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0092.fl: -------------------------------------------------------------------------------- 1 | let get_children (P_HIER ch) = ch 2 | /\ get_children (P_LEAF _) = [] 3 | ; 4 | 5 | letrec number_of_wires (PINST name opts leaf fa_inps fa_outs ints content) = 6 | let local = length (md_expand_vectors ints) in 7 | leaf => local | 8 | itlist (\pp. \r. number_of_wires pp+r) (get_children content) local 9 | ; 10 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0092.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0092.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0093.fl: -------------------------------------------------------------------------------- 1 | letrec extract_subckts target p = 2 | val (PINST name opts leaf fa_inps fa_outs ints content) = p in 3 | str_is_suffix target name => [p] | 4 | leaf => [] | 5 | flatmap (extract_subckts target) (get_children content) 6 | ; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0093.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0093.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0094.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0094.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0095.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; // Must be loaded for HFL 2 | 3 | TYPE "byte" 8; 4 | TYPE "addr" 8; 5 | TYPE "pc" 29; 6 | {'a::byte}; 7 | {'a::addr}; 8 | {'a::pc}; 9 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0095.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0095.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0096.fl: -------------------------------------------------------------------------------- 1 | {'1::byte} '+' {'1::byte}; // Ok 2 | {'1::byte} '+' {'1::addr}; // Fails typechecking 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0096.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0096.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0097.fl: -------------------------------------------------------------------------------- 1 | ENUM "op" ["ADD", "JMP", "NOP"]; 2 | ENUM "state" [("INIT", 1), ("FETCH", 2), ("EXECUTE", 4), ("WB", 8)]; 3 | {'a::op}; 4 | {'a::state}; 5 | ADD; 6 | NOP; 7 | INIT; 8 | WB; 9 | is_FETCH 'a; 10 | is_WB 'a; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0097.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0097.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0098.fl: -------------------------------------------------------------------------------- 1 | ADD '+' JMP; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0098.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0098.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0099.fl: -------------------------------------------------------------------------------- 1 | STRUCT "bundle" [("high","byte"),("low","byte")]; 2 | 'a-->high; // Extract field 3 | 'a<--high ? '0xab; // Update field 4 | 'a<--high ? '0xab <-- low ? '0xba; // Nested updates 5 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0099.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0099.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0100.fl: -------------------------------------------------------------------------------- 1 | STRUCT "opcode" 32 [ 2 | ("opcode", "op", [31,29]), // Non-contiguous! 3 | ("dest", "addr", (23--16)), 4 | ("src1", "addr", (15--8)), 5 | ("src2", "addr", (7--0)), 6 | ("target", "pc", (28--0)) 7 | ] 8 | ; 9 | 10 | 'a-->opcode; 11 | 'a-->dest; 12 | 'a-->target; 13 | 14 | '0<--opcode ? ADD 15 | <--dest ? '0x1 16 | <--src1 ? '0x2 17 | <--src2 ? '0x3 18 | ; 19 | 20 | '0<--opcode ? JMP 21 | <--target ? '0xabba 22 | ; 23 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0100.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0101.fl: -------------------------------------------------------------------------------- 1 | MEMORY "regfile" [(10,"addr")] "byte"; 2 | {'a::regfile}; 3 | read_regfile 'a '0x3; 4 | write_regfile 'a '0x0 '0xab; 5 | write_regfile 'a '0x3 'd; 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0101.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0102.fl: -------------------------------------------------------------------------------- 1 | MEMORY "array" [(4,"addr"),(5,"addr")] "byte"; 2 | {'a::array}; 3 | read_array 'a '0x3 '0x1; 4 | write_array 'a '0x0 '0x0 '0xab; 5 | write_array 'a '0x3 '0x2 'd; 6 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0102.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0103.fl: -------------------------------------------------------------------------------- 1 | let add3 = 2 | byte_input a. 3 | byte_input b. 4 | byte_input c. 5 | byte_output o. 6 | byte_internal m. 7 | CELL "draw_hier add3" [ 8 | m <- a '+' b, 9 | o <- m '+' c 10 | ]; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0103.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0104.fl: -------------------------------------------------------------------------------- 1 | let add9 = 2 | byte_input i1 i2 i3 i4 i5 i6 i7 i8 i9. 3 | byte_output o. 4 | byte_internal m1 m2 m3. 5 | CELL "draw_hier add6" [ 6 | add3 i1 i2 i3 m1, 7 | add3 i4 i5 i6 m2, 8 | add3 i7 i8 i9 m3, 9 | add3 m1 m2 m3 o 10 | ]; 11 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0104.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0105.fl: -------------------------------------------------------------------------------- 1 | let add3 = 2 | input a. 3 | input b. 4 | input c. 5 | output o. 6 | internal m. 7 | CELL "draw_hier add3" [ 8 | m <- a '+' b, 9 | o <- m '+' c 10 | ]; 11 | 12 | let add9 = 13 | input i1 i2 i3 i4 i5 i6 i7 i8 i9. 14 | output o. 15 | internal m1 m2 m3. 16 | CELL "draw_hier add6" [ 17 | add3 i1 i2 i3 m1, 18 | add3 i4 i5 i6 m2, 19 | add3 i7 i8 i9 m3, 20 | add3 m1 m2 m3 o 21 | ]; 22 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0105.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0105.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0106.fl: -------------------------------------------------------------------------------- 1 | letrec add_list = 2 | list_input il. 3 | output o. 4 | internal m. 5 | CELL "draw_hier add_list" ( 6 | length il = 1 => [o <- (hd il)] | 7 | [ 8 | add_list (tl il) m, 9 | o <- (hd il) '+' m 10 | ] 11 | ); 12 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0106.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0107.fl: -------------------------------------------------------------------------------- 1 | letrec add_tree = 2 | list_input il. 3 | output o. 4 | internal m1 m2. 5 | CELL "draw_hier add_tree" ( 6 | let l = length il in 7 | l = 1 => [o <- (hd il)] | 8 | let high = firstn (l/2) il in 9 | let low = butfirstn (l/2) il in 10 | [ 11 | add_tree high m1, 12 | add_tree low m2, 13 | o <- m1 '+' m2 14 | ] 15 | ); 16 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0107.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0108.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0109.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | let p = verilog2pexlif "-Iverilog_examples" // Yosys flags 3 | "mux4" // Top-level module 4 | ["small.v", "small_lib.v"] // Files to read & compile 5 | [] // Additional files needed 6 | ; 7 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0109.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0109.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0110.fl: -------------------------------------------------------------------------------- 1 | number_of_wires p; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0110.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0111.fl: -------------------------------------------------------------------------------- 1 | extract_subckts "not" p; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0111.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0111.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0112.fl: -------------------------------------------------------------------------------- 1 | let ckt = pexlif2fsm p; 2 | ckt; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0112.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0112.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0113.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0113.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0114.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | let p = verilog2pexlif "-Iverilog_examples" // Yosys flags 3 | "mux4" // Top-level module 4 | ["small.v", "small_lib.v"] // Files to read & compile 5 | [] // Additional files needed 6 | ; 7 | let ckt = pexlif2fsm p; 8 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0114.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0114.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0115.fl: -------------------------------------------------------------------------------- 1 | 2 | let ant = 3 | "din_0" is "a" for 5 phases 4 | and 5 | "din_1" is 0 for 1 phase followed_by "0x1" for 2 phases followed_by 6 | 0 for 1 phase followed_by "b" for 1 phase 7 | and 8 | "din_2" is "c" for 5 phases 9 | and 10 | "din_3" is "d" for 5 phases 11 | and 12 | "sel[1:0]" is "0x0" for 1 phase followed_by 13 | "0x1" for 1 phase followed_by 14 | "0x2" for 1 phase followed_by 15 | "0x3" for 1 phase followed_by 16 | "s[1:0]" for 1 phase 17 | ; 18 | 19 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0115.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0115.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0116.fl: -------------------------------------------------------------------------------- 1 | let ste_res = STE "-e" ckt [] ant [] []; 2 | ste_res; 3 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0116.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0116.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0117.fl: -------------------------------------------------------------------------------- 1 | get_trace ste_res "mux_out"; 2 | // See it in increasing time instead. 3 | rev it; 4 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0117.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0117.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0118.fl: -------------------------------------------------------------------------------- 1 | let vis = STE_debug ckt; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0118.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0118.jpg -------------------------------------------------------------------------------- /src/doc/fl/code/code_0119.fl: -------------------------------------------------------------------------------- 1 | STE "-e" vis [] ant [] []; 2 | -------------------------------------------------------------------------------- /src/doc/fl/code/code_0119.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/code/code_0119.jpg -------------------------------------------------------------------------------- /src/doc/fl/figs/forte_help.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/figs/forte_help.jpg -------------------------------------------------------------------------------- /src/doc/fl/figs/forte_start.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/figs/forte_start.jpg -------------------------------------------------------------------------------- /src/doc/fl/figs/forte_with_args_start.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/figs/forte_with_args_start.jpg -------------------------------------------------------------------------------- /src/doc/fl/fl_guide.ilg: -------------------------------------------------------------------------------- 1 | This is makeindex, version 2.15 [TeX Live 2015] (kpathsea + Thai support). 2 | Scanning style file ./my_index_style............done (12 attributes redefined, 0 ignored). 3 | Scanning input file fl_guide.idx2....done (152 entries accepted, 0 rejected). 4 | Sorting entries....done (1150 comparisons). 5 | Generating output file glossary.tex....done (216 lines written, 0 warnings). 6 | Output written in glossary.tex. 7 | Transcript written in fl_guide.ilg. 8 | -------------------------------------------------------------------------------- /src/doc/fl/fl_guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/fl_guide.pdf -------------------------------------------------------------------------------- /src/doc/fl/fl_tutorial_template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Getting Started with VossII and Fl 4 | 5 | 6 | 7 |
8 |
9 |
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/doc/fl/full_window_capture: -------------------------------------------------------------------------------- 1 | 2 | set aname [exec mktemp -u] 3 | 4 | set ofile [lindex $argv 0] 5 | set rem [lrange $argv 1 end] 6 | 7 | eval exec fl -f full_window_capture.fl $aname $rem & 8 | 9 | after 1000 10 | 11 | if { $rem != "" } { 12 | send $aname screen_capture:do_cmd [list "ARGS\;"] 13 | } 14 | 15 | send $aname screen_capture:do_full_window_capture $ofile 16 | 17 | catch {send $aname screen_capture:do_cmds [list "quit\;"]} 18 | 19 | exit 20 | -------------------------------------------------------------------------------- /src/doc/fl/hello.fl: -------------------------------------------------------------------------------- 1 | print "Hello, World!\n"; 2 | print "This print brought to you by a .fl script!\n"; 3 | -------------------------------------------------------------------------------- /src/doc/fl/my_index_style: -------------------------------------------------------------------------------- 1 | item_0 "\n \\item {\\rm " 2 | item_1 "\n \\subitem {\\rm " 3 | item_2 "\n \\subsubitem {\\rm " 4 | item_01 "\n \\subitem {\\rm " 5 | item_x1 "}\n \\subitem {\\rm " 6 | item_12 "\n \\subsubitem {\\rm " 7 | item_x2 "}\n \\subitem {\\rm " 8 | delim_0 "}, " 9 | delim_1 "}, " 10 | delim_2 "}, " 11 | level '@' 12 | actual '&' 13 | -------------------------------------------------------------------------------- /src/doc/fl/screen_capture: -------------------------------------------------------------------------------- 1 | 2 | set aname [exec mktemp -u] 3 | 4 | exec fl -f screen_capture.fl $aname & 5 | 6 | after 1000 7 | 8 | 9 | proc create_voss2_images {ifiles} { 10 | foreach ifile [lsort $ifiles] { 11 | set ofile "[file rootname $ifile].jpg" 12 | set fp [open $ifile "r"] 13 | set cmds [read $fp] 14 | send $::aname screen_capture:do_cmds [list $cmds] 15 | close $fp 16 | send $::aname screen_capture:do_capture $ofile 17 | } 18 | } 19 | 20 | create_voss2_images $argv 21 | 22 | catch {send $::aname screen_capture:do_cmds [list "quit\;"]} 23 | 24 | exit 25 | -------------------------------------------------------------------------------- /src/doc/fl/screen_capture.fl: -------------------------------------------------------------------------------- 1 | tcl_eval ["source screen_capture.tcl", 2 | sprintf "tk appname %s" (hd ARGS) 3 | ]; 4 | -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/bdd_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/bdd_big.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/bdd_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/bdd_small.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/fac_calc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/fac_calc.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/front_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/front_page.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/go_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/go_on.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000001.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000002.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000003.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000004.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000005.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000006.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000007.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000008.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000009.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000010.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000011.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000012.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000013.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000014.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000015.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_1/gui_000016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_1/gui_000016.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_2/gui_000001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_2/gui_000001.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_2/gui_000002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_2/gui_000002.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_2/gui_000003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_2/gui_000003.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_2/gui_000004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_2/gui_000004.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_2/gui_000005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_2/gui_000005.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_2/gui_000006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_2/gui_000006.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_2/gui_000007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_2/gui_000007.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000001.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000002.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000003.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000004.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000005.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000006.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000007.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000008.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000009.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000010.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui/session_3/gui_000011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui/session_3/gui_000011.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui_01.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui_02.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui_03.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/gui_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/screen_shots/gui_04.png -------------------------------------------------------------------------------- /src/doc/fl/screen_shots/wip_gui/capture.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN { 3 | cnt = 0; 4 | } 5 | 6 | { 7 | m = $1; 8 | for(i = 0; i < m; i++) { 9 | cmd = sprintf("import -window root -crop 1200x540+685+80 gui_%06d.png", i); 10 | printf("\nPicture %d: ", i); 11 | system("sleep 1"); 12 | system(cmd); 13 | printf("taken\n"); 14 | system("sleep 4"); 15 | } 16 | exit(0) 17 | } 18 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0001.fl: -------------------------------------------------------------------------------- 1 | print "Hello, world!\n"; 2 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0001.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0002.fl: -------------------------------------------------------------------------------- 1 | print; 2 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0002.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0003.fl: -------------------------------------------------------------------------------- 1 | print 2 | "I have discovered a truly marvelous proof of this, 3 | which a single line is too narrow to contain.\n" 4 | ; 5 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0003.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0004.fl: -------------------------------------------------------------------------------- 1 | 1 * 2 + 3; 2 | (3+3) % 5; 3 | 5.5 / 10.0; 4 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0004.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0005.fl: -------------------------------------------------------------------------------- 1 | [1, 2, 3]; 2 | "these" : "are" : "strings" : []; 3 | 4 | ("a string", ["a", "list"], 42); 5 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0005.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0005.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0006.fl: -------------------------------------------------------------------------------- 1 | let zero = 0; 2 | let succ x = x + 1; 3 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0006.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0006.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0007.fl: -------------------------------------------------------------------------------- 1 | map (\x. x*x) [1,2,3,4,5]; 2 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0007.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0007.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0008.fl: -------------------------------------------------------------------------------- 1 | let add = \x. \y. x + y; 2 | add 5 10; 3 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0008.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0008.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0009.fl: -------------------------------------------------------------------------------- 1 | let to_string 0 = "zero" 2 | /\ to_string 1 = "one" 3 | /\ to_string _ = "many" 4 | ; 5 | 6 | to_string 0; 7 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0009.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0009.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0010.fl: -------------------------------------------------------------------------------- 1 | let fac 0 = 1 2 | /\ fac n = n*fac (n-1) 3 | ; 4 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0010.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0011.fl: -------------------------------------------------------------------------------- 1 | letrec fac 0 = 1 2 | /\ fac n = n*fac (n-1) 3 | ; 4 | 5 | fac 5; 6 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0011.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0011.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0012.fl: -------------------------------------------------------------------------------- 1 | let first (x, y) = x; 2 | 3 | first ("hello", 5.5, 123); 4 | first (1, 2); 5 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0012.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0013.fl: -------------------------------------------------------------------------------- 1 | let firstForStrings (x, _) = {x :: string}; 2 | 3 | firstForStrings ("hello", 5.5, 123); 4 | firstForStrings (1, 2); 5 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0013.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0013.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0014.fl: -------------------------------------------------------------------------------- 1 | let firstForStrings ({x :: string}, _) = x; 2 | 3 | let addTwoInts x y = {(x + y) :: int}; 4 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0014.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0014.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0015.fl: -------------------------------------------------------------------------------- 1 | let two = 2; 2 | let addTwo x = two + x; 3 | let two = 3; 4 | addTwo 2; 5 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0015.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0015.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0016.fl: -------------------------------------------------------------------------------- 1 | load "hello.fl"; 2 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0016.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0016.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0017.fl: -------------------------------------------------------------------------------- 1 | lettype suit = spades | hearts | clubs | diamonds; 2 | lettype rank = ace | king | queen | jack | numeric int; 3 | lettype card = card suit rank; 4 | 5 | let aceOfSpades = card spades ace; 6 | let twoOfHearts = card hearts (numeric 2); 7 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0017.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0017.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0018.fl: -------------------------------------------------------------------------------- 1 | lettype rank = ace | king | queen | jack | numeric int; 2 | 3 | let cardValue ace = 14 4 | /\ cardValue king = 13 5 | /\ cardValue queen = 13 6 | /\ cardValue jack = 13 7 | /\ cardValue (numeric n) = n 8 | ; 9 | 10 | let better a b = cardValue a > cardValue b; 11 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0018.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0018.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0019.fl: -------------------------------------------------------------------------------- 1 | lettype suit = spades | hearts | clubs | diamonds; 2 | lettype rank = ace | king | queen | jack | numeric int; 3 | lettype card = card suit rank; 4 | 5 | new_type_abbrev hand = card list; 6 | let myHand = {[aceOfSpades, twoOfHearts] :: hand}; 7 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0019.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0019.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0020.fl: -------------------------------------------------------------------------------- 1 | T AND F; 2 | T XOR (F OR T); 3 | IF T THEN (print "hello") ELSE (print "absurdity"); 4 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0020.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0021.fl: -------------------------------------------------------------------------------- 1 | letrec mutex_list [x] = x 2 | /\ mutex_list (x:xs) = IF x THEN AND_list (map NOT xs) ELSE mutex_list xs 3 | ; 4 | 5 | let x = variable "x"; 6 | let y = variable "y"; 7 | mutex_list [F, F, F, x, y]; 8 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0021.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0022.fl: -------------------------------------------------------------------------------- 1 | let x = variable "x"; 2 | let y = variable "y"; 3 | (NOT (x AND y)) == ((NOT x) OR (NOT y)); 4 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0022.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0022.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0023.fl: -------------------------------------------------------------------------------- 1 | let implies a b = (NOT a) OR b; 2 | infixr 5 implies; 3 | 4 | VARS "a b c d e p q"; 5 | let transitions = AND_list 6 | [ (a implies b) 7 | , (a implies c) 8 | , (b implies d) 9 | , (d implies b) 10 | , (d implies e) 11 | , (p implies q) 12 | ]; 13 | 14 | let reachable s t = transitions implies (s implies t); 15 | 16 | // Reachable: we see a nice, concise T 17 | reachable a d; 18 | 19 | // Not reachable: we get a formula describing the hypothetical conditions 20 | // under which q WOULD be reachable. 21 | reachable a q; 22 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0023.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0024.fl: -------------------------------------------------------------------------------- 1 | !x. !y. NOT (x AND y) = (NOT x) OR (NOT y); 2 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0024.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0025.fl: -------------------------------------------------------------------------------- 1 | let implies a b = (NOT a) OR b; 2 | infixr 5 implies; 3 | 4 | VARS "a b c d e p q"; 5 | let transitions = AND_list 6 | [ (a implies b) 7 | , (a implies c) 8 | , (b implies d) 9 | , (d implies b) 10 | , (d implies e) 11 | , (p implies q) 12 | ]; 13 | 14 | let reachable s t = 15 | Quant_forall (depends transitions) (transitions implies (s implies t)); 16 | 17 | reachable a d; 18 | reachable a q; 19 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0025.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0025.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0026.fl: -------------------------------------------------------------------------------- 1 | load "ste.fl"; 2 | let ckt = 3 | verilog2pexlif 4 | "-Iverilog_examples" // Flags to Yosys, which parses the Verilog for us 5 | "mux4" // Top-level module 6 | ["small.v", "small_lib.v"] // Files to read and compile 7 | []; // Additional files 8 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0026.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0026.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0027.fl: -------------------------------------------------------------------------------- 1 | let fsm = pexlif2fsm ckt; 2 | STE "" fsm [] [] [] []; 3 | -------------------------------------------------------------------------------- /src/doc/fl/tut_code/code_0027.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_code/code_0027.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_img/ste1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_img/ste1.jpg -------------------------------------------------------------------------------- /src/doc/fl/tut_img/ste2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/src/doc/fl/tut_img/ste2.jpg -------------------------------------------------------------------------------- /src/doc/hfl_examples/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | EXAMPLES = 01_simple.fl 02_example.fl 03_example.fl 04_example.fl \ 3 | 05_example.fl 06_example.fl 07_example.fl 08_example.fl 4 | 5 | install: $(EXAMPLES) 6 | -@mkdir ../../../doc/hfl_examples 7 | /bin/cp $(EXAMPLES) ../../../doc/hfl_examples 8 | 9 | clean: 10 | -@rm ../../../doc/hfl_examples 11 | 12 | -------------------------------------------------------------------------------- /src/external/minisat-2.2.0/core/Makefile: -------------------------------------------------------------------------------- 1 | EXEC = minisat 2 | DEPDIR = mtl utils 3 | 4 | include $(MROOT)/mtl/template.mk 5 | -------------------------------------------------------------------------------- /src/external/minisat-2.2.0/mtl/config.mk: -------------------------------------------------------------------------------- 1 | ## 2 | ## This file is for system specific configurations. For instance, on 3 | ## some systems the path to zlib needs to be added. Example: 4 | ## 5 | ## CFLAGS += -I/usr/local/include 6 | ## LFLAGS += -L/usr/local/lib 7 | -------------------------------------------------------------------------------- /src/external/minisat-2.2.0/simp/Makefile: -------------------------------------------------------------------------------- 1 | EXEC = minisat 2 | DEPDIR = mtl utils core 3 | 4 | include $(MROOT)/mtl/template.mk 5 | -------------------------------------------------------------------------------- /src/external/minisat-2.2.0/utils/Makefile: -------------------------------------------------------------------------------- 1 | EXEC = system_test 2 | DEPDIR = mtl 3 | 4 | include $(MROOT)/mtl/template.mk 5 | -------------------------------------------------------------------------------- /src/external/minisat/.gitignore: -------------------------------------------------------------------------------- 1 | config.mk 2 | build 3 | bin 4 | include 5 | lib 6 | -------------------------------------------------------------------------------- /src/external/yosys/write_pexlif/.gitignore: -------------------------------------------------------------------------------- 1 | write_pexlif.d 2 | -------------------------------------------------------------------------------- /src/external/yosys/write_pexlif/Makefile: -------------------------------------------------------------------------------- 1 | 2 | 3 | write_pexlif.so: write_pexlif.cc 4 | echo "Compiling write_pexlif" 5 | yosys-config --build write_pexlif.so write_pexlif.cc 6 | 7 | clean: 8 | -@rm -f write_pexlif.so write_pexlif.d 9 | -------------------------------------------------------------------------------- /src/external/yosys_Voss_patches/backends/pexlif/Makefile.inc: -------------------------------------------------------------------------------- 1 | 2 | OBJS += backends/pexlif/pexlif.o 3 | 4 | -------------------------------------------------------------------------------- /src/fl-hs-plugins/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all install 2 | 3 | BIN_DIR ?= $(HOME)/.bin 4 | DOC_DIR ?= $(BIN_DIR)/../doc 5 | DEFINES = --ghc-options=-DDEFAULT_PLUGIN_DIR=$(PLUGIN_DIR) 6 | PATHS = --bindir=$(BIN_DIR) 7 | 8 | all: 9 | cabal v1-install --only-dependencies 10 | cabal v1-build $(DEFINES) 11 | 12 | install: 13 | mkdir -p $(BIN_DIR) 14 | cabal v1-install $(DEFINES) --bindir=$(BIN_DIR) --symlink-bindir=$(BIN_DIR) 15 | 16 | doc: 17 | cabal v1-haddock $(DEFINES) 18 | 19 | doc_install: doc 20 | cp -r dist/doc/html/fl-plugins $(DOC_DIR) 21 | 22 | clean: 23 | cabal v1-clean 24 | -------------------------------------------------------------------------------- /src/fl-hs-plugins/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /src/fl-hs-plugins/templates/Makefile.mustache: -------------------------------------------------------------------------------- 1 | .PHONY: build clean install 2 | 3 | build: 4 | cabal v1-install --only-dependencies 5 | cabal v1-build 6 | 7 | clean: 8 | cabal v1-clean 9 | 10 | install: build 11 | mkdir -p {{install-dir}} 12 | cp dist/build/{{plugin-name}}/lib{{plugin-name}}.so* {{install-dir}}/lib{{plugin-name}}.so 13 | -------------------------------------------------------------------------------- /src/fl-hs-plugins/templates/hsbracket.mustache: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | static void my_enter(void) __attribute__((constructor)); 5 | static void my_enter(void) 6 | { 7 | static char *argv[] = { "lib{{plugin-name}}.so", 0 }, **argv_ = argv; 8 | static int argc = 1; 9 | hs_init(&argc, &argv_); 10 | } 11 | 12 | static void my_exit(void) __attribute__((destructor)); 13 | static void my_exit(void) 14 | { 15 | hs_exit(); 16 | } 17 | -------------------------------------------------------------------------------- /src/fl-hs-plugins/templates/main.mustache: -------------------------------------------------------------------------------- 1 | module Main where 2 | import Language.FL.Plugin 3 | 4 | foreign export ccall "fl_init" fl_init :: FlInit 5 | 6 | fl_init :: FlInit 7 | fl_init = flInit main 8 | 9 | main :: IO Plugin 10 | main = return Plugin 11 | { pluginName = "{{plugin-name}}" 12 | , pluginVersion = 0 13 | , pluginExports = 14 | [ export "hello" $ \name -> "Hello, " ++ name ++ "!" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /src/lib/Makefile: -------------------------------------------------------------------------------- 1 | # This makefile makes fl_lib.a from files in this directory 2 | # and includes dependencies to #include files elsewhere 3 | # in the subdirectory. 4 | # 5 | CFLAGS += $(DEBUG_FLAG) $(OPTIMIZATION_FLAG) $(COMPATIBILITY_FLAG) \ 6 | -Wall -Wextra -Werror 7 | 8 | # 9 | # 10 | INC = -I../include 11 | 12 | OBJ = alloc.o buf.o hash.o morestr.o readrc.o rec.o strmgr.o timer.o \ 13 | uniq_buf.o generation_hash.o 14 | 15 | fl_lib.a: $(OBJ) 16 | ar r fl_lib.a $? 17 | $(RANLIB) fl_lib.a 18 | 19 | # 20 | # compilation with includes 21 | # 22 | .c.o: 23 | $(CC) $(CFLAGS) $(INC) -c $< 24 | 25 | clean: 26 | -@/bin/rm -f *.o fl_lib.a 27 | -------------------------------------------------------------------------------- /src/license_template: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | -------------------------------------------------------------------------------- /src/scripts/fl: -------------------------------------------------------------------------------- 1 | 2 | # Raise the stack size limit to avoid core dumps before the builtin 3 | # stack limit gets triggered. 4 | unlimit stacksize 5 | # Run fl without randomization of the virtual address space 6 | # This will allow more predictable crashes that can be debugged!!! 7 | # I don't care (at the moment) how much more vulnerable the program is..... 8 | setarch `uname -m` -R $BIN_DIR/fl.bin $argv[1-] 9 | 10 | -------------------------------------------------------------------------------- /src/vosslib/idv.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | let USE_IDV_VERSIONS = 1; 6 | fprintf stdinfo "-- Loading idv.fl ."; 7 | cload (DIR^"vector_names.fl"); 8 | cload (DIR^"../IDVII/src/fl/design/load.fl"); 9 | fprintf stdinfo "."; 10 | cload (DIR^"../IDVII/src/fl/gui/sch_draw/load.fl"); 11 | cload (DIR^"smt.fl"); 12 | fprintf stdinfo " done --\n"; 13 | -------------------------------------------------------------------------------- /src/vosslib/osu018_stdcells.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | (cload (DIR^"../IDVII/src/fl/design/util.fl")) fseq 6 | (cload (DIR^"../IDVII/src/fl/design/yosys_lib.fl")) fseq 7 | (cload (DIR^"../IDVII/lib/osu018_stdcells/stdcells.fl")); 8 | 9 | let rename_stdcells {p::pexlif} = p; 10 | -------------------------------------------------------------------------------- /src/vosslib/ste.fl: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------- 2 | // Copyright 2020 Carl-Johan Seger 3 | // SPDX-License-Identifier: Apache-2.0 4 | //------------------------------------------------------------------- 5 | 6 | fprintf stdinfo "-- Loading ste.fl ."; 7 | cload (DIR^"vector_names.fl"); 8 | cload (DIR^"../IDVII/src/fl/design/load.fl"); 9 | cload (DIR^"../IDVII/src/fl/gui/sch_draw/load.fl"); 10 | fprintf stdinfo " done --\n"; 11 | -------------------------------------------------------------------------------- /tutorials/August_24_2020/session_2/M65C02/M65C02_BCD.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TeamVoss/VossII/ca59d11a35016517f85d7aeff8bae86fc1991ff2/tutorials/August_24_2020/session_2/M65C02/M65C02_BCD.v -------------------------------------------------------------------------------- /tutorials/August_24_2020/session_2/M65C02/README: -------------------------------------------------------------------------------- 1 | A simple processor with an example of a (very simple) verification of 2 | one of its operations. 3 | 4 | The main file is M65C02.fl. 5 | --------------------------------------------------------------------------------