def __handle_edited_address(self, register, path, new_text): """ Called when an address in the table has changed """ try: if ":" in new_text: self.__handle_ram_address(register, path, new_text) else: self.__handle_reg_address(register, path, new_text) except ValueError: LOGGER.warning('Address %0x was not changed: invalid value "%s"' % (register.address, new_text))
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ Provides a preview editor, tying a text buffer to a webkit display. All changes to the buffer cause an update on the webkit display, after the text is converted from restructuredText to HTML. """ from regenerate.db import LOGGER try: import webkit from preview import html_string PREVIEW_ENABLED = True except ImportError: PREVIEW_ENABLED = False LOGGER.warning("Webkit is not installed, preview of formatted " "comments will not be available") class PreviewEditor(object): """ Connects a text buffer to a webkit display. """ def __init__(self, text_buffer, webkit_container): if not PREVIEW_ENABLED: return self.__webkit = webkit.WebView() self.__container = webkit_container self.__container.add(self.__webkit) self.__container.hide()
from rst_doc import RstDoc from uvm_reg_block import UVMRegBlockRegisters from sdc import Sdc from spyglass import Spyglass for module in MODULES: for mpath in IMPORT_PATHS: try: fullpath = mpath + "." + module[0] a = __import__(fullpath, globals(), locals(), module[1]) for t, info in a.EXPORTERS: if t == WriterBase.TYPE_BLOCK: EXPORTERS.append(info) elif t == WriterBase.TYPE_GROUP: GRP_EXPORTERS.append(info) else: PRJ_EXPORTERS.append(info) break except ImportError, msg: continue except AttributeError, msg: continue except SyntaxError, msg: print str(msg) continue else: LOGGER.warning('Cound not import the "{0}" module'.format(module[0]))
# Attempt to load the GTK spell package to provide basic spell checking. # If the import fails (gtkspell not installed), then create a dummy # spell object that does nothing. from regenerate.db import LOGGER try: from gtkspell import Spell except ImportError: class Spell(object): "Empty class for compatiblity if the spell checker is not found" def __init__(self, obj): pass def detach(self): pass LOGGER.warning("gtkspell is not installed, " "spell checking will not be available")
def write_register(self, reg, dbase, of): rname = "reg_%s_%s" % (dbase.set_name, reg.token.lower()) of.write("/*! \\class %s\n" % rname) of.write(" * \\brief %s\n" % reg.description) of.write(" *\n * \\addtogroup registers\n") of.write(" * * @{\n") of.write(" */\n") of.write(" class %s extends uvm_reg;\n\n" % rname) of.write(" `uvm_object_utils(%s);\n\n" % rname) field_list = [] for field in reg.get_bit_fields(): of.write(" uvm_reg_field %s;\n" % self._fix_name(field)) if field.reset_type == BitField.RESET_PARAMETER: field_list.append(field) for field in field_list: if field.reset_parameter: name = field.reset_parameter else: name = "p%s" % field.field_name.upper() if field.width == 1: of.write(" bit %s = 1'b0;\n" % name) else: of.write(" bit [%d:0] %s = '0;\n" % (field.width - 1, name)) grps = set() for field in reg.get_bit_fields(): if field.values: n = self._fix_name(field) grps.add("cov_%s" % n) of.write("\n covergroup cov_%s;\n" % n) of.write(" option.per_instance = 1;\n") of.write(" %s: coverpoint %s.value {\n" % (n.upper(), n.lower())) for value in field.values: of.write(" bins bin_%s = {'h%x};\n" % self.mk_coverpt(value)) of.write(" }\n") of.write(" endgroup : cov_%s\n" % n) of.write('\n function new(string name = "%s");\n' % reg.token.lower()) if grps: of.write(' super.new(name, %d, ' % reg.width) of.write('build_coverage(UVM_CVR_FIELD_VALS));\n') for item in grps: of.write(' %s = new;\n' % item) else: of.write(' super.new(name, %d' % reg.width) of.write(', UVM_NO_COVERAGE);\n') of.write(' endfunction : new\n\n') if grps: of.write(' function void sample(uvm_reg_data_t data,\n') of.write(' uvm_reg_data_t byte_en,\n') of.write(' bit is_read,\n') of.write(' uvm_reg_map map);\n') for item in grps: of.write(' %s.sample();\n' % item) of.write(' endfunction: sample\n\n') of.write(' virtual function void build();\n') for field in reg.get_bit_fields(): of.write(' %s = uvm_reg_field::type_id::create("%s"' % (self._fix_name(field), self._fix_name(field))) of.write(', , get_full_name());\n') dont_test = False side_effects = False no_reset_test = False for field in reg.get_bit_fields(): size = field.width if field.start_position >= reg.width: lsb = field.start_position % reg.width tok = reg.token msg = "%s has bits that exceed the register width" % tok LOGGER.warning(msg) else: lsb = field.start_position access = access_map.get(field.field_type, None) if access is None: dont_test = True continue if field.output_has_side_effect: side_effects = True volatile = is_volatile(field) has_reset = 1 if field.reset_type == BitField.RESET_PARAMETER: no_reset_test = True if field.reset_parameter: reset = field.reset_parameter else: reset = "p%s" % field.field_name.upper() else: reset = "%d'h%x" % (field.width, field.reset_value) is_rand = 0 ind_access = individual_access(field, reg) of.write(' %s.configure(this, %d, %d, "%s", %d, %s, %d, %d, %d);\n' % (self._fix_name(field), size, lsb, access, volatile, reset, has_reset, is_rand, ind_access)) if reg.do_not_test or dont_test: of.write(' uvm_resource_db #(bit)::set({"REG::", ' 'get_full_name()}, "NO_REG_TESTS", 1);\n') else: if side_effects: of.write(' uvm_resource_db #(bit)::set({"REG::", ' 'get_full_name()}, "NO_REG_BIT_BASH_TEST", 1);\n') of.write(' uvm_resource_db #(bit)::set({"REG::", ' 'get_full_name()}, "NO_REG_ACCESS_TEST", 1);\n') of.write(' uvm_resource_db #(bit)::set({"REG::", ' 'get_full_name()}, "NO_REG_SHARED_ACCESS_TEST", 1);\n') if no_reset_test: of.write(' uvm_resource_db #(bit)::set({"REG::", ' 'get_full_name()}, "NO_REG_HW_RESET_TEST", 1);\n') of.write(' reset();\n') of.write(' endfunction : build\n\n') of.write(' endclass : %s\n\n' % rname) of.write('/*!@}*/\n')