OpenCores
URL https://opencores.org/ocsvn/tcp_socket/tcp_socket/trunk

Subversion Repositories tcp_socket

[/] [tcp_socket/] [trunk/] [chips2/] [chips/] [compiler/] [compiler.py] - Diff between revs 2 and 4

Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 4
#!/usr/bin/env python
#!/usr/bin/env python
"""A C to Verilog compiler"""
"""A C to Verilog compiler"""
 
 
__author__ = "Jon Dawson"
__author__ = "Jon Dawson"
__copyright__ = "Copyright (C) 2013, Jonathan P Dawson"
__copyright__ = "Copyright (C) 2013, Jonathan P Dawson"
__version__ = "0.1"
__version__ = "0.1"
 
 
import sys
import sys
import os
import os
 
 
from chips.compiler.parser import Parser
from chips.compiler.parser import Parser
from chips.compiler.exceptions import C2CHIPError
from chips.compiler.exceptions import C2CHIPError
from chips.compiler.optimizer import parallelise
from chips.compiler.optimizer import parallelise
from chips.compiler.optimizer import cleanup_functions
from chips.compiler.optimizer import cleanup_functions
from chips.compiler.optimizer import cleanup_registers
from chips.compiler.optimizer import cleanup_registers
from chips.compiler.tokens import Tokens
from chips.compiler.tokens import Tokens
from chips.compiler.verilog_speed import generate_CHIP as generate_CHIP_speed
from chips.compiler.verilog_speed import generate_CHIP as generate_CHIP_speed
from chips.compiler.verilog_area import generate_CHIP as generate_CHIP_area
from chips.compiler.verilog_area import generate_CHIP as generate_CHIP_area
 
 
def comp(input_file, options=[]):
def comp(input_file, options=[]):
 
 
  reuse = "no_reuse" not in options
    reuse = "no_reuse" not in options
  initialize_memory = "no_initialize_memory" not in options
    initialize_memory = "no_initialize_memory" not in options
 
 
  try:
    try:
      if "speed" not in options:
        if "speed" not in options:
 
 
          #Optimize for area
            #Optimize for area
          parser = Parser(input_file, reuse, initialize_memory)
            parser = Parser(input_file, reuse, initialize_memory)
          process = parser.parse_process()
            process = parser.parse_process()
          name = process.main.name
            name = process.main.name
          instructions = process.generate()
            instructions = process.generate()
          instructions = cleanup_functions(instructions)
            instructions = cleanup_functions(instructions)
          instructions, registers = cleanup_registers(instructions, parser.allocator.all_registers)
            instructions, registers = cleanup_registers(instructions, parser.allocator.all_registers)
          output_file = name + ".v"
            output_file = name + ".v"
          output_file = open(output_file, "w")
            output_file = open(output_file, "w")
          inputs, outputs = generate_CHIP_area(
            inputs, outputs = generate_CHIP_area(
                  input_file,
                    input_file,
                  name,
                    name,
                  instructions,
                    instructions,
                  output_file,
                    output_file,
                  registers,
                    registers,
                  parser.allocator.memory_size_2,
                    parser.allocator.memory_size_2,
                  parser.allocator.memory_size_4,
                    parser.allocator.memory_size_4,
                  initialize_memory,
                    initialize_memory,
                  parser.allocator.memory_content_2,
                    parser.allocator.memory_content_2,
                  parser.allocator.memory_content_4)
                    parser.allocator.memory_content_4)
          output_file.close()
            output_file.close()
 
 
      else:
        else:
 
 
          #Optimize for speed
            #Optimize for speed
          parser = Parser(input_file, reuse, initialize_memory)
            parser = Parser(input_file, reuse, initialize_memory)
          process = parser.parse_process()
            process = parser.parse_process()
          name = process.main.name
            name = process.main.name
          instructions = process.generate()
            instructions = process.generate()
          instructions = cleanup_functions(instructions)
            instructions = cleanup_functions(instructions)
          instructions, registers = cleanup_registers(instructions, parser.allocator.all_registers)
            instructions, registers = cleanup_registers(instructions, parser.allocator.all_registers)
          if "no_concurrent" in sys.argv:
            if "no_concurrent" in sys.argv:
            frames = [[i] for i in instructions]
                frames = [[i] for i in instructions]
          else:
            else:
            frames = parallelise(instructions)
                frames = parallelise(instructions)
          output_file = name + ".v"
            output_file = name + ".v"
          output_file = open(output_file, "w")
            output_file = open(output_file, "w")
          inputs, outputs = generate_CHIP_speed(
            inputs, outputs = generate_CHIP_speed(
                  input_file,
                    input_file,
                  name,
                    name,
                  frames,
                    frames,
                  output_file,
                    output_file,
                  registers,
                    registers,
                  parser.allocator.memory_size_2,
                    parser.allocator.memory_size_2,
                  parser.allocator.memory_size_4,
                    parser.allocator.memory_size_4,
                  initialize_memory,
                    initialize_memory,
                  parser.allocator.memory_content_2,
                    parser.allocator.memory_content_2,
                  parser.allocator.memory_content_4)
                    parser.allocator.memory_content_4)
          output_file.close()
            output_file.close()
 
 
  except C2CHIPError as err:
    except C2CHIPError as err:
      print "Error in file:", err.filename, "at line:", err.lineno
        print "Error in file:", err.filename, "at line:", err.lineno
      print err.message
        print err.message
      sys.exit(-1)
        sys.exit(-1)
 
 
 
 
  return name, inputs, outputs, ""
    return name, inputs, outputs, ""
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.