script: Add Py script to check for guideline rules & README.md
Added readme_check_guideline.md along with the check_guideline.py to explain the usage of this and to show how it should be used. Signed-off-by: Iulia Moldovan <iulia.moldovan@analog.com>main
parent
961ebe0cc2
commit
1014a0de78
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,107 @@
|
||||||
|
# User guide for [check_guideline.py](https://github.com/analogdevicesinc/hdl/tree/master/.github/scripts/check_guideline.py)
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
* the script must be run while being in the root directory (/hdl)
|
||||||
|
* clean the repository to remove the files generated by Vivado
|
||||||
|
* it will be run only on Verilog and SystemVerilog files that do not contain "tb" in their path
|
||||||
|
* uses Python 3.x
|
||||||
|
|
||||||
|
## Rules that are checked
|
||||||
|
|
||||||
|
These rules can be found in the [HDL coding guideline](https://github.com/analogdevicesinc/hdl/blob/master/docs/hdl_coding_guideline.md).
|
||||||
|
|
||||||
|
### 1. License header
|
||||||
|
|
||||||
|
It checks if the license header is up-to-date, containing the current year in
|
||||||
|
the year range. Exceptions are the JESD files and the ones specified in the
|
||||||
|
`avoid_list` string list.
|
||||||
|
If `-e` option is added, the script can update the year range.
|
||||||
|
|
||||||
|
### 2. Two or more consecutive empty lines
|
||||||
|
|
||||||
|
It checks in the whole file if there are two or more consecutive empty lines.
|
||||||
|
If `-e` option is added, the script can remove them and leave only one empty line.
|
||||||
|
|
||||||
|
### 3. Trailing whitespace
|
||||||
|
|
||||||
|
It checks if there are whitespace characters at the end of the lines.
|
||||||
|
If `-e` option is added, then they can be removed.
|
||||||
|
|
||||||
|
### 4. Lines after `endmodule` tag
|
||||||
|
|
||||||
|
It checks if there are lines after it.
|
||||||
|
If `-e` option is added, the script can remove them.
|
||||||
|
|
||||||
|
### 5. Parentheses around the module declaration
|
||||||
|
|
||||||
|
It checks if the parentheses around the module declaration (meaning `) (` for
|
||||||
|
the parameters' list) are on an empty line, right after the last parameter.
|
||||||
|
It also checks for the closing parenthesis at the module declaration (meaning `);`)
|
||||||
|
to be on an empty line, at the beginning, right after the last I/O port line.
|
||||||
|
If `-e` option is added, the script can put them in their proper place.
|
||||||
|
|
||||||
|
### 6. Indentation of code
|
||||||
|
|
||||||
|
It checks if all lines (except for the ones that are commented) have an indentation
|
||||||
|
of two or multiple of two spaces.
|
||||||
|
Other exceptions to this are the `module` line, the `endmodule` line, the `) (`
|
||||||
|
and the `);` from the module declaration.
|
||||||
|
|
||||||
|
### 7. Position of the module instances
|
||||||
|
|
||||||
|
It checks if the parameters' list (if that's the case) is in proper position,
|
||||||
|
meaning that the position of `#` is checked, the parameters to be specified each
|
||||||
|
on its own line, the parentheses around the instance name and the closing parenthesis
|
||||||
|
of the module instance.
|
||||||
|
|
||||||
|
_NOTE_: these rules are marked in the script with **GC** (stands for Guideline Check)
|
||||||
|
in the comments.
|
||||||
|
|
||||||
|
## Changes done by the script to your files
|
||||||
|
|
||||||
|
If one wants the script to make changes in files, they will be regarding:
|
||||||
|
* license header, except for JESD files and the ones specified in `avoid_list`
|
||||||
|
* two or more consecutive empty lines
|
||||||
|
* trailing whitespaces
|
||||||
|
* lines after `endmodule` tag
|
||||||
|
* parentheses around the module declaration (meaning `) (` for the parameters'
|
||||||
|
list and `);` for when closing the declaration)
|
||||||
|
|
||||||
|
## Ways to run the script
|
||||||
|
|
||||||
|
1. With no arguments: `python3 check_guideline.py`
|
||||||
|
Checks all files with the properties specified above.
|
||||||
|
Does not modify the files.
|
||||||
|
|
||||||
|
2. With arguments:
|
||||||
|
1. `-e` with no file specified
|
||||||
|
Checks all files with the properties specified above. Additionally,
|
||||||
|
it modifies the module definition parentheses according to the guideline.
|
||||||
|
|
||||||
|
2. `-m`
|
||||||
|
Checks files that are given as arguments (by their names including the
|
||||||
|
extension).
|
||||||
|
|
||||||
|
3. `-me`
|
||||||
|
Checks files that are given as arguments (by their names including the
|
||||||
|
extension) and modifies the files where the guideline is not respected.
|
||||||
|
|
||||||
|
4. `-p`
|
||||||
|
Checks files that are given as arguments (by their relative path) and
|
||||||
|
modifies the files where the guideline is not respected.
|
||||||
|
|
||||||
|
5. `-pe`
|
||||||
|
Checks files that are given as arguments (by their relative path) and
|
||||||
|
modifies the files where the guideline is not respected.
|
||||||
|
|
||||||
|
## Examples of running
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 check_guideline.py >> warnings.txt
|
||||||
|
python3 check_guideline.py -e >> warnings.txt
|
||||||
|
python3 check_guideline.py -m axi_ad9783.v >> warnings.txt
|
||||||
|
python3 check_guideline.py -me axi_ad9783.v axi_ad9783_if.v up_adc_common.v >> warnings.txt
|
||||||
|
python3 check_guideline.py -p ./library/axi_ad9783/axi_ad9783.v ./library/common/up_adc_common.v >> warnings.txt
|
||||||
|
python3 check_guideline.py -pe ./library/axi_ad9783/axi_ad9783_if.v >> warnings.txt
|
||||||
|
```
|
Loading…
Reference in New Issue