Exemplo n.º 1
0
def crawl_pages(subcats):
    dirpath = "data/site/%s/%s/" % (config.wiki_lang, config.start_cat)
    pages = []

    counter = 0
    for subcat in subcats:
        counter += 1
        pb.update(counter, len(subcats))

        subcat_dirpath = dirpath + subcat + "/"
        misc.mkdir_p(subcat_dirpath)

        filepath = subcat_dirpath + "pages.txt"
        if os.path.exists(filepath):
            subcat_pages = misc.read_file(filepath)
        else:
            subcat_pages = get_subcat_pages(subcat)
            misc.write_file(filepath, subcat_pages)

        pages.extend(subcat_pages)

    pages = [
        page for page in pages if not config.page_bl(page) and lang.can(page)
    ]
    pages = OrderedDict.fromkeys(pages).keys()  # unique
    return pages
Exemplo n.º 2
0
def main(parameters = {}):
    name                = parameters["CPU_NAME"]
    test_bench_name     = name + "_" + misc.bench_name
    test_bench_file     = test_bench(parameters)
    test_bench_run      = test_bench_script(parameters)
    test_bench_dir      = os.path.join(os.getcwd(), misc.bench_name)
    misc.write_file(test_bench_dir, test_bench_name + ".v", test_bench_file)
    misc.write_file(test_bench_dir, "run_" + misc.bench_name, test_bench_run)
    misc.make_file_executable(test_bench_dir, "run_" + misc.bench_name)
Exemplo n.º 3
0
def create_project_file(all_parameters, path):
    """Create a minimal .qpf file."""
    qpf_template = string.Template(
"""
PROJECT_REVISION = "${PROJECT_NAME}"
""")
    qpf = qpf_template.substitute(all_parameters)
    project_name = all_parameters["PROJECT_NAME"]
    misc.write_file(path, project_name + ".qpf", qpf)
Exemplo n.º 4
0
def crawl_subcats():
	dirpath = "data/site/%s/" % config.start_cat
	filepath = dirpath + "%s/subcats.txt"

	if os.path.exists(filepath):
		subcats = misc.read_file(filepath)
	else:
		subcats = get_subcats(config.start_cat)
		subcats = [subcat for subcat in subcats if lang.can_subcat(subcat)]
		
		misc.write_file(dirpath + "subcats.txt", subcats)
	return subcats
Exemplo n.º 5
0
def crawl_subcats():
    dirpath = "data/site/%s/" % config.start_cat
    filepath = dirpath + "%s/subcats.txt"

    if os.path.exists(filepath):
        subcats = misc.read_file(filepath)
    else:
        subcats = get_subcats(config.start_cat)
        subcats = [subcat for subcat in subcats if lang.can_subcat(subcat)]

        misc.write_file(dirpath + "subcats.txt", subcats)
    return subcats
Exemplo n.º 6
0
def cpu(parameters = {}):
    all_parameters = cpu_parameters.all_parameters(parameters)
    definition     = cpu_definition.definition(all_parameters)
    name           = all_parameters["CPU_NAME"]
    cpu_dir        = os.path.join(os.getcwd(), name)
    misc.write_file(cpu_dir, name + ".v", definition)
    parameters_misc.write_parameter_file(cpu_dir, 
                                         name, 
                                         all_parameters)
    os.chdir(cpu_dir)
    cpu_test_harness.main(all_parameters)
    cpu_test_bench.main(all_parameters)
    return name
Exemplo n.º 7
0
def process_iss(filepath):
    """
    #define MyAppVersion  "203"
    """
    iss_file = dbfile.read_file_data(filepath)
    for num, line in enumerate(iss_file):
        if line.startswith("#define MyAppVersion"):
            l = line.split()
            l[2] = '"{}"'.format(VERSION)
            iss_file[num] = " ".join(l)
            break
    iss_file = [x + '\n' for x in iss_file]
    misc.write_file(iss_file, filepath)
Exemplo n.º 8
0
def process_debian_and_spec(filepath):
    """
    search for: Version: 203
    replace with "Version: VERSION"
    """
    deb_file = dbfile.read_file_data(filepath)
    for num, line in enumerate(deb_file):
        if line.startswith("Version:"):
            l = line.split()
            l[1] = VERSION
            deb_file[num] = " ".join(l)
            break
    deb_file = [x + '\n' for x in deb_file]
    misc.write_file(deb_file, filepath)
Exemplo n.º 9
0
def main(parameters = {}):
    name                = parameters["CPU_NAME"]
    test_harness_name   = name + "_" + misc.harness_name
    test_harness_file   = test_harness(parameters)
    test_harness_run    = test_harness_script(parameters)
    test_harness_dir    = os.path.join(os.getcwd(), misc.harness_name)
    misc.write_file(test_harness_dir, test_harness_name + ".v", test_harness_file)
    misc.write_file(test_harness_dir, "run_" + misc.harness_name, test_harness_run)
    misc.make_file_executable(test_harness_dir, "run_" + misc.harness_name)
    # XXX ECL hack: we should specify the location of the parameter file
    parameters_misc.update_parameter_file(os.getcwd(), 
                                          name, 
                                          {"PROJECT_NAME":test_harness_name})
    parameters.update({"PROJECT_NAME":test_harness_name})
    cpu_quartus_project.project(parameters, test_harness_dir)
Exemplo n.º 10
0
def create_node_interstage(definitions: dict, node: BlogPost) -> None:
    # The interstage is the user markdown with the
    # node references mixed in. This interstage is
    # what will then be turned into html.

    markdown = read_file(node.markdown_path)
    for word, (regex, target_node_id) in definitions.items():
        if word == node.name:
            continue

        # Turn word into syntax [word]({{ post: X }}).
        # We have to do some lambda magic to avoid silly overlapping issues.
        markdown = regex.sub(
            lambda match: rf"[{match.group(1)}]({{{{ post: {target_node_id} }}}})"
            if match.group(1) else match.group(0), markdown)

    write_file(node.interstage_path, markdown)
Exemplo n.º 11
0
def crawl_pages(subcats):
	dirpath = "data/site/%s/" % config.start_cat
	pages = []

	counter = 0
	for subcat in subcats:
		counter += 1
		pb.update(counter, len(subcats))

		subcat_dirpath = dirpath + subcat + "/"
		misc.mkdir_p(subcat_dirpath)

		filepath = subcat_dirpath + "pages.txt"
		if os.path.exists(filepath):
			subcat_pages = misc.read_file(filepath)
		else:
			subcat_pages = get_subcat_pages(subcat)
			misc.write_file(filepath, subcat_pages)

		pages.extend(subcat_pages)

	pages = [page for page in pages if lang.can_page(page)]
	pages = OrderedDict.fromkeys(pages).keys() # unique
	return pages
Exemplo n.º 12
0
def convert_markdown_for_post(post: BlogPost) -> None:
    markdown_src = read_file(post.interstage_path)
    markdown_src = pre_process_markdown(markdown_src, post)
    html_src = markdown.markdown(
        markdown_src, extensions=["sane_lists", "md_in_html", "extra"])
    write_file(post.html_path, html_src)
Exemplo n.º 13
0
def create_settings_file(all_parameters, path, install_base = install_base):
    """Create a .qsf file with all the necessary initial settings."""
    qsf_template = string.Template(
"""
# Project-Wide Assignments
# ========================
set_global_assignment -name LAST_QUARTUS_VERSION 12.1
set_global_assignment -name FLOW_DISABLE_ASSEMBLER ON
set_global_assignment -name SMART_RECOMPILE ON
set_global_assignment -name NUM_PARALLEL_PROCESSORS ${QUARTUS_NUM_PARALLEL_PROCESSORS}
set_global_assignment -name SDC_FILE ${install_base}/Octavo/Misc/timing.sdc
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/Misc/params.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/Misc/delay_line.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/DataPath/ALU/AddSub/AddSub_Carry_Select.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/DataPath/ALU/AddSub/AddSub_Ripple_Carry.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/DataPath/ALU/Multiplier/Mult.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/DataPath/ALU/Bitwise/Bitwise.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/DataPath/ALU/ALU.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/DataPath/DataPath.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/ControlPath/Controller/Controller.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/ControlPath/Instr_Decoder/Instr_Decoder.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/ControlPath/ControlPath.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/Memory/Memory.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/Octavo.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/SIMD.v
set_global_assignment -name VERILOG_FILE ${install_base}/Octavo/Scalar.v
set_global_assignment -name VERILOG_FILE ${install_base}/Harness/output_register.v
set_global_assignment -name VERILOG_FILE ${install_base}/Harness/shift_register.v
set_global_assignment -name VERILOG_FILE ${install_base}/Harness/registered_reducer.v
set_global_assignment -name VERILOG_FILE ../${CPU_NAME}.v
set_global_assignment -name VERILOG_FILE ${PROJECT_NAME}.v
set_global_assignment -name FLOW_ENABLE_RTL_VIEWER OFF

# Classic Timing Assignments
# ==========================
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS OFF
set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON

# Analysis & Synthesis Assignments
# ================================
set_global_assignment -name FAMILY "${FAMILY}"
set_global_assignment -name TOP_LEVEL_ENTITY ${PROJECT_NAME}
set_global_assignment -name DEVICE_FILTER_SPEED_GRADE FASTEST
set_global_assignment -name OPTIMIZATION_TECHNIQUE SPEED
set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP ON
set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION OFF
set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS ON
set_global_assignment -name MUX_RESTRUCTURE ON
set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION OFF
set_global_assignment -name AUTO_RAM_RECOGNITION ON
set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION OFF
set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON
set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING ON
set_global_assignment -name SAVE_DISK_SPACE OFF
set_global_assignment -name REMOVE_DUPLICATE_REGISTERS ON

# Fitter Assignments
# ==================
set_global_assignment -name DEVICE ${DEVICE}
set_global_assignment -name FITTER_EFFORT "STANDARD FIT"
set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING OFF
set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON
set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING ON
set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON
set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT EXTRA
set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION ON
set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL MAXIMUM
set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA OFF
set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIXII AUTO
set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS OFF
set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA OFF
set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION OFF
set_global_assignment -name SEED 1
set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 4
set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 4
set_global_assignment -name AUTO_DELAY_CHAINS OFF
set_global_assignment -name OPTIMIZE_HOLD_TIMING "ALL PATHS"

# Design Assistant Assignments
# ============================
set_global_assignment -name ENABLE_DA_RULE "C101, C102, C103, C104, C105, C106, R101, R102, R103, R104, R105, T101, T102, A101, A102, A103, A104, A105, A106, A107, A108, A109, A110, S101, S102, S103, S104, D101, D102, D103, M101, M102, M103, M104, M105"
set_global_assignment -name ENABLE_DRC_SETTINGS ON

# Power Estimation Assignments
# ============================
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"

# Incremental Compilation Assignments
# ===================================
set_global_assignment -name RAPID_RECOMPILE_MODE OFF

# Netlist Viewer Assignments
# ==========================
set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV OFF

# -----------------------------------
# start ENTITY(${PROJECT_NAME})

    # start LOGICLOCK_REGION(${CPU_NAME}:DUT)
    # ------------------------------------

        # LogicLock Region Assignments
        # ============================
        set_global_assignment -name LL_ENABLED ${LL_ENABLED} -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_RESERVED ${LL_RESERVED} -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_SECURITY_ROUTING_INTERFACE OFF -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_IGNORE_IO_BANK_SECURITY_CONSTRAINT OFF -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_PR_REGION OFF -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_HEIGHT ${LL_HEIGHT} -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_WIDTH ${LL_WIDTH} -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_ORIGIN ${LL_ORIGIN} -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_STATE FLOATING -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_AUTO_SIZE ${LL_AUTO_SIZE} -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name LL_ROUGH OFF -section_id "${CPU_NAME}:DUT"
        set_instance_assignment -name LL_MEMBER_OF "${CPU_NAME}:DUT" -to "${CPU_NAME}:DUT" -section_id "${CPU_NAME}:DUT"
        set_instance_assignment -name LL_MEMBER_EXCEPTIONS "MEMORY:DSP" -to "${CPU_NAME}:DUT" -section_id "${CPU_NAME}:DUT"
		set_instance_assignment -name LL_MEMBER_OF "${CPU_NAME}:DUT" -to "${CPU_NAME}:DUT|Octavo:Octavo|Scalar:Scalar|ControlPath:ControlPath|Controller:Controller|Controller_threads:threads_pc" -section_id "${CPU_NAME}:DUT"

    # end LOGICLOCK_REGION(${CPU_NAME}:DUT)
    # ----------------------------------

    # start LOGICLOCK_REGION(Root Region)
    # -----------------------------------

        # LogicLock Region Assignments
        # ============================
        set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region"
        set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region"

    # end LOGICLOCK_REGION(Root Region)
    # ---------------------------------

    # start DESIGN_PARTITION(Top)
    # ---------------------------

        # Incremental Compilation Assignments
        # ===================================
        set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
        set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
        set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
        set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

    # end DESIGN_PARTITION(Top)
    # -------------------------

    # start DESIGN_PARTITION(${CPU_NAME}:DUT)
    # ------------------------------------

        # Incremental Compilation Assignments
        # ===================================
        set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id "${CPU_NAME}:DUT"
        set_global_assignment -name PARTITION_COLOR 39423 -section_id "${CPU_NAME}:DUT"
        set_instance_assignment -name PARTITION_HIERARCHY dut_2ae21 -to "${CPU_NAME}:DUT" -section_id "${CPU_NAME}:DUT"

    # end DESIGN_PARTITION(${CPU_NAME}:DUT)
    # ----------------------------------


${SCALAR_PARTITION}
${SIMD_PARTITIONS}

# end ENTITY(${PROJECT_NAME})
# ---------------------------------
""")
    all_parameters["install_base"] = install_base
    
    if all_parameters["PARTITION_SCALAR"] == True:
        scalar_module_partition = create_Scalar_partition(all_parameters)
    else:
        scalar_module_partition = ""

    # Matches conditional generation in Octavo.v
    SIMD_layer_count     = all_parameters["SIMD_LAYER_COUNT"]
    SIMD_lanes_per_layer = all_parameters["SIMD_LANES_PER_LAYER"]
    SIMD_lanes           = all_parameters["SIMD_LANE_COUNT"]
    if all_parameters["PARTITION_SIMD_LANES"] == True and SIMD_lanes > 0:
        simd_partitions = create_SIMD_partitions_all(all_parameters, SIMD_layer_count, SIMD_lanes_per_layer)
    else:
        simd_partitions = ""

    all_parameters.update({"SCALAR_PARTITION":scalar_module_partition})
    all_parameters.update({"SIMD_PARTITIONS":simd_partitions})
    qsf = qsf_template.substitute(all_parameters)
    project_name = all_parameters["PROJECT_NAME"]
    misc.write_file(path, project_name + ".qsf", qsf)
Exemplo n.º 14
0
def write_parameter_file(path, name, parameters):
    misc.write_file(path, name + filename_extension, pprint.pformat(parameters))