GithubHelp home page GithubHelp logo

00mjk / systemverilog Goto Github PK

View Code? Open in Web Editor NEW

This project forked from theclams/systemverilog

0.0 0.0 0.0 1.62 MB

SystemVerilog plugin for Sublime Text

License: Apache License 2.0

Python 87.01% SystemVerilog 12.99%

systemverilog's Introduction

Sublime Text SystemVerilog Package

Description

Syntax Highlighting:

  • SystemVerilog / Verilog
  • UCF (Xilinx Constraint file)

Note: the default color scheme (Monokai) is missing a lot of scope, and might not give the best results. You can try my personal variation of Sunburst : https://gist.github.com/TheClams/5811d7bc8829abe58c11d4c98e729dc0

Code Navigation:

  • Show signal declaration in tooltip or status bar
  • Goto declaration : move cursor to the declaration of the selected signal
  • Goto driver : select a signal a go to the driver (port, assignement, connection)
  • Find Instances: find all instance of a module inside a project
  • Move cursor / select text between start/end of block (like [], {}, begin/end, function/endfunction, ...)
  • Show hierarchy of a module (all its sub-module)
  • Navigation side-bar:
    • Displaying a class members/method, module port/signal/instances, ...
    • Double click on instance/type to jump to it

Code Completion :

  • Smart Autocompletion: method for standard type, field for struct/interface/class, system task, ...
  • Smart snippet for always, case
  • 'begin end' macro to surround a text by begin/end (cf Keymapping section to see how to use it)
  • Various Snippets (module, interface, class, for, ...)
  • Insert template for FSM

Module Instance helper:

  • Instantiation: Select a module from a list and create instantiation and connection
  • Reconnect: remove connection to deleted port, add connection to new port
  • Toggle .* in module binding (similar to the auto-star feature of Emacs verilog-mode)

Code Alignement:

  • Reindent
  • Align module port
  • Align signal declaration
  • Align module instantiation
  • Align assignement

Linting:

  • Find/Remove all unused signals
  • List all undeclared signals

Configuration

To see all existing configuration option and edit your configuration, go to Preferences->Package Settings->SystemVerilog->Settings.

Detail documentation

For a detail documentation on the different features, check online documentation: http://sv-doc.readthedocs.org/en/latest .

Keymapping example

To map key to the different features, simply add the following to your user .sublime-keymap file:

{
	"keys": ["f10"], "command": "verilog_type",
	"context":
	[
		{ "key": "num_selections", "operator": "equal", "operand": 1 },
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{
	"keys": ["ctrl+f10"], "command": "verilog_module_inst",
	"context":
	[
		{ "key": "num_selections", "operator": "equal", "operand": 1 },
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{
	"keys": ["ctrl+shift+f10"], "command": "verilog_toggle_dot_star",
	"context":
	[
		{ "key": "num_selections", "operator": "equal", "operand": 1 },
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{
	"keys": ["ctrl+shift+a"], "command": "verilog_align",
	"context":
	[
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{
	"keys": ["alt+shift+a"], "command": "verilog_align", "args":{"cmd":"reindent"},
	"context":
	[
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{
	"keys": ["ctrl+f12"], "command": "verilog_goto_driver",
	"context":
	[
		{ "key": "num_selections", "operator": "equal", "operand": 1 },
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{
	"keys": ["shift+f12"], "command": "verilog_goto_declaration",
	"context":
	[
		{ "key": "num_selections", "operator": "equal", "operand": 1 },
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
// Begin/End
{
	"keys": ["ctrl+'"],
	"command": "insert_snippet", "args": {"contents": "begin\n\t$0\nend"},
	"context": [{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }]
},
{
	"keys": ["ctrl+'"],
	"command": "run_macro_file",
	"args": {"file": "Packages/SystemVerilog/beginend.sublime-macro"},
	"context": [{ "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }]
},
{
	"keys": ["ctrl+m"], "command": "verilog_goto_block_boundary", "args":{"cmd":"move"},
	"context":
	[
		{ "key": "num_selections", "operator": "equal", "operand": 1 },
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{
	"keys": ["ctrl+shift+m"], "command": "verilog_goto_block_boundary", "args":{"cmd":"select"},
	"context":
	[
		{ "key": "num_selections", "operator": "equal", "operand": 1 },
		{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}
	]
},
{ "keys": ["f1"], "command": "verilog_toggle_navbar", "args":{"cmd":"toggle"}},
{ "keys": ["ctrl+f1"], "command": "verilog_toggle_lock_navbar"},
{
  "keys": ["alt+f1"], "command": "verilog_show_navbar",
  "context":[{ "key": "selector", "operator": "equal", "operand": "source.systemverilog"}]
}

systemverilog's People

Contributors

aroben avatar blackcardinal72 avatar calculuswhiz avatar ccing17 avatar clamsax avatar mgolokhov avatar sneakypete81 avatar theclams avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.