full case与parallel case

 

full case

parallel case

作用

指示综合器:case里没提到的状态不用管

指示综合器:此case无优先级的概念

使用这个选项可能的后果

如果case不完全,那么仿真器会产生latch,而使用这个选项后综合器综合出来的电路不会有latch。

导致仿真和综合结果不一致。

如果此case有优先级(导致优先级的原因:使用Verilog编程时使用case可能会有多重匹配或者使用casez、casex都可以导致多重匹配。多重匹配会自动匹配第一个,可能会导致优先级编码),那么在仿真的时候会有优先级,而使用这个选项后综合出来的电路却没有优先级。

导致仿真和综合结果不一致。

问题的实质

使用不完全的case一定会导致latch。

当使用了这一个选项后,导致综合器不产生latch,而仿真器却产生latch(的行为),从而产生问题。

如果verilog存在多重匹配时,一定会有优先级现象。

当使用了这一个选项后,导致综合器不产生优先级现象,而仿真器却产生优先级(的行为),从而产生问题。

被误用的最初目的

防止产生因为case不完全导致的latch

仿制因为各匹配项不互斥产生优先级现象

解决最初目的的替代方法

1、对reg赋初值

2、使case的分支覆盖所有,如果不可能或者求简便,加入default分支。(本质的解决方法)

1、如果想使用优先级,那么使用if-else

不想使用优先级,那么使用case。

2、不使用casez和casex。

3、让所有匹配项互斥。(本质的解决方法)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注:

1、为何VHDL的case不会产生优先级而Verilog的case会产生优先级?

VHDL的case:值必须为常数,并且必须彼此不同,故天生就是parallel,没有优先级。

Verilog的case:值可以为各种值或者信号;并且在casex、casez中“?”(或者“z”)的使用(比如:11?? 和??11可以作为同一个case的分支),导致多重匹配,语法规定第一个匹配者为执行的分支,故产生了优先级。

2、关于casex和casez:

casez:把z和?当作“not-care”比特,z和?可以出现在case后面的表达式或者匹配项的表达式中。

casex:把z、?和x当作“not-care”比特,z和?可以出现在case后面的表达式或者匹配项的表达式中。

3、作者说的唯一可以使用这两个选项的地方

Adding either or both "// synopsys full_case parallel_case"directives to the Verilog FSM source code is generally beneficial when codingone-hot or one-hot with zero-idle FSMs. In these cases, it is given that onlyone bit of the state vector is set and that all other bit-pattern combinations shouldbe treated as "don't cares." It is also given that there should be nooverlap in the list of case items.

比如下例:

以上内容是《“full_caseparallel_case”, the Evil Twins of Verilog Synthesis》的笔记

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# ethminer [![standard-readme compliant](https://img.shields.io/badge/readme style-standard-brightgreen.svg)](https://github.com/RichardLitt/standard-readme) [![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg)][Gitter] [![Releases](https://img.shields.io/github/downloads/ethereum-mining/ethminer/total.svg)][Releases] > Ethereum miner with OpenCL, CUDA and stratum support **Ethminer** is an Ethash GPU mining worker: with ethminer you can mine every coin which relies on an Ethash Proof of Work thus including Ethereum, Ethereum Classic, Metaverse, Musicoin, Ellaism, Pirl, Expanse and others. This is the actively maintained version of ethminer. It originates from [cpp-ethereum] project (where GPU mining has been discontinued) and builds on the improvements made in [Genoil's fork]. See [FAQ](#faq) for more details. ### Features - OpenCL mining - Nvidia CUDA mining - realistic benchmarking against arbitrary epoch/DAG/blocknumber - on-GPU DAG generation (no more DAG files on disk) - stratum mining without proxy - OpenCL devices picking - farm failover (getwork + stratum) ## Table of Contents - [Install](#install) - [Usage](#usage) - [Examples connecting some pools](#examples-connecting-some-pools) - [Build](#build) - [Continuous Integration and development builds](#continuous-integration-and-development-builds) - [Building from source](#building-from-source) - [CMake configuration options](#cmake-configuration-options) - [Maintainer](#maintainer) - [Contribute](#contribute) - [F.A.Q.](#faq) ## Install [![Releases](https://img.shields.io/github/downloads/ethereum-mining/ethminer/total.svg)][Releases] Standalone **executables** for _Linux_, _macOS_ and _Windows_ are provided in the [Releases] section. Download an archive for your operating system and unpack the content to a place accessible from command line. The ethminer is ready to go. | Builds | Release | Date | | ------ | ------- | ---- | | Last | [![GitHub release](https://img.shields.io/github/release/ethereum-mining/ethminer/all.svg)](https://github.com/ethereum-mining/ethminer/releases) | [![GitHub Release Date](https://img.shields.io/github/release-date-pre/ethereum-mining/ethminer.svg)](https://github.com/ethereum-mining/ethminer/releases) | | Stable | [![GitHub release](https://img.shields.io/github/release/ethereum-mining/ethminer.svg)](https://github.com/ethereum-mining/ethminer/releases) | [![GitHub Release Date](https://img.shields.io/github/release-date/ethereum-mining/ethminer.svg)](https://github.com/ethereum-mining/ethminer/releases) | ## Usage The **ethminer** is a command line program. This means you launch it either from a Windows command prompt or Linux console, or create shortcuts to predefined command lines using a Linux Bash script or Windows batch/cmd file. For a full list of available command, please run: ```sh ethminer --help ``` ### Examples connecting some pools Check our [samples](POOL_EXAMPLES_ETH.md) to see how to connect to different pools. ## Build ### Continuous Integration and development builds | CI | OS | Status | Development builds | | ------------- | ------------- | ----- | ----------------- | | [Travis CI] | Linux, macOS | [![Travis CI](https://img.shields.io/travis/ethereum-mining/ethminer.svg)][Travis CI] | ✗ No build artifacts, [Amazon S3 is needed] for this | | [AppVeyor] | Windows | [![AppVeyor](https://img.shields.io/appveyor/ci/ethereum-mining/ethminer.svg)][AppVeyor] | ✓ Build artifacts available for all PRs and branches | The AppVeyor system automatically builds a Windows .exe for every commit. The latest version is always available [on the landing page](https://ci.appveyor.com/project/ethereum-mining/ethminer) or you can [browse the history](https://ci.appveyor.com/project/ethereum-mining/ethminer/history) to access previous builds. To download the .exe on a build under 'JOB NAME' select 'Configuration: Release', choose 'ARTIFACTS' then download the zip file. ### Building from source This project uses [CMake] and [Hunter] package manager. 1. Make sure git submodules are up to date ```sh git submodule update --init --recursive ``` 2. Create a build directory. ```sh mkdir build; cd build ``` 3. Configure the project with CMake. Check out additional [configuration options](#cmake-configuration-options). ```sh cmake .. ``` Note: In Windows, it is possible to have issues with VS 2017 compilers, in that case, use VS 2017 installer to get VS 2015 compilers and use: ```sh cmake .. -G "Visual Studio 15 2017 Win64" -Tv140,host=x64 ``` 4. Build the project using [CMake Build Tool Mode]. This is a portable variant of `make`. ```sh cmake --build . ``` Note: In Windows, it is possible to have compiler issues if you don't specify build config. In that case use: ```sh cmake --build . --config Release ``` 5. _(Optional, Linux only)_ Install the built executable. ```sh sudo make install ``` #### OpenCL support on Linux If you're planning to use [OpenCL on Linux](https://github.com/ruslo/hunter/wiki/pkg.opencl#pitfalls) you have to install OpenGL libraries. E.g. on Ubuntu run: ```sh sudo apt-get install mesa-common-dev ``` #### Disable Hunter If you want to install dependencies yourself or use system package manager you can disable Hunter by adding [-DHUNTER_ENABLED=OFF](https://docs.hunter.sh/en/latest/reference/user-variables.html#hunter-enabled) to configuration options. ### CMake configuration options Pass these options to CMake configuration command, e.g. ```sh cmake .. -DETHASHCUDA=ON -DETHASHCL=OFF ``` - `-DETHASHCL=ON` - enable OpenCL mining, `ON` by default, - `-DETHASHCUDA=ON` - enable CUDA mining, `ON` by default. - `-DAPICORE=ON` - enable API Server, `ON` by default. - `-DETHDBUS=ON` - enable D-Bus support, `OFF` by default. ## Maintainer [![Gitter](https://img.shields.io/gitter/room/ethereum-mining/ethminer.svg)][Gitter] - Paweł Bylica [@chfast](https://github.com/chfast) ## Contribute [![Gitter](https://img.shields.io/gitter/room/ethereum-mining/ethminer.svg)][Gitter] To meet the community, ask general questions and chat about ethminer join [the ethminer channel on Gitter][Gitter]. All bug reports, pull requests and code reviews are very much welcome. ## License Licensed under the [GNU General Public License, Version 3](LICENSE). ## F.A.Q 1. Why is my hashrate with Nvidia cards on Windows 10 so low? The new WDDM 2.x driver on Windows 10 uses a different way of addressing the GPU. This is good for a lot of things, but not for ETH mining. For Kepler GPUs: I actually don't know. Please let me know what works best for good old Kepler. For Maxwell 1 GPUs: Unfortunately the issue is a bit more serious on the GTX750Ti, already causing suboptimal performance on Win7 and Linux. Apparently about 4MH/s can still be reached on Linux, which, depending on ETH price, could still be profitable, considering the relatively low power draw. For Maxwell 2 GPUs: There is a way of mining ETH at Win7/8/Linux speeds on Win10, by downgrading the GPU driver to a Win7 one (350.12 recommended) and using a build that was created using CUDA 6.5. For Pascal GPUs: You have to use the latest WDDM 2.1 compatible drivers in combination with Windows 10 Anniversary edition in order to get the full potential of your Pascal GPU. 2. Why is a GTX 1080 slower than a GTX 1070? Because of the GDDR5X memory, which can't be fully utilized for ETH mining (yet). 3. Are AMD cards also affected by slowdowns with increasing DAG size? Only GCN 1.0 GPUs (78x0, 79x0, 270, 280), but in a different way. You'll see that on each new epoch (30K blocks), the hashrate will go down a little bit. 4. Can I still mine ETH with my 2GB GPU? Not really, your VRAM must be above the DAG size (Currently about 2.15 GB.) to get best performance. Without it severe hash loss will occur. 5. What are the optimal launch parameters? The default parameters are fine in most scenario's (CUDA). For OpenCL it varies a bit more. Just play around with the numbers and use powers of 2. GPU's like powers of 2. 6. What does the `--cuda-parallel-hash` flag do? [@davilizh](https://github.com/davilizh) made improvements to the CUDA kernel hashing process and added this flag to allow changing the number of tasks it runs in parallel. These improvements were optimised for GTX 1060 GPUs which saw a large increase in hashrate, GTX 1070 and GTX 1080/Ti GPUs saw some, but less, improvement. The default value is 4 (which does not need to be set with the flag) and in most cases this will provide the best performance. 7. What is ethminer's relationship with [Genoil's fork]? [Genoil's fork] was the original source of this version, but as Genoil is no longer consistently maintaining that fork it became almost impossible for developers to get new code merged there. In the interests of progressing development without waiting for reviews this fork should be considered the active one and Genoil's as legacy code. 8. Can I CPU Mine? No, use geth, the go program made for ethereum by ethereum. 9. CUDA GPU order changes sometimes. What can I do? There is an environment var `CUDA_DEVICE_ORDER` which tells the Nvidia CUDA driver how to enumerates the graphic cards. Following values are valid: * FASTEST_FIRST (Default) - causes CUDA to guess which device is fastest using a simple heuristic. * PCI_BUS_ID - orders devices by PCI bus ID in ascending order. To prevent some unwanted changes in the order of your CUDA devices you **might set the environment to `PCI_BUS_ID`**. This can be done: * Linux: * Adapt /etc/environment file and add a line `CUDA_DEVICE_ORDER=PCI_BUS_ID` * Adapt your start script launching ethminer and add a line `export CUDA_DEVICE_ORDER=PCI_BUS_ID` * Windows: * Adapt your environment using the control panel (just search `setting environment windows control panel` using your favorite search engine) * Adapt your start (.bat) file launching ethminer and add a line `setx CUDA_DEVICE_ORDER=PCI_BUS_ID` or `set CUDA_DEVICE_ORDER=PCI_BUS_ID` * For more details about `setx` and `set` see [Amazon S3 is needed]: https://docs.travis-ci.com/user/uploading-artifacts/ [AppVeyor]: https://ci.appveyor.com/project/ethereum-mining/ethminer [CMake]: https://cmake.org/ [CMake Build Tool Mode]: https://cmake.org/cmake/help/latest/manual/cmake.1.html#build-tool-mode [cpp-ethereum]: https://github.com/ethereum/cpp-ethereum [Genoil's fork]: https://github.com/Genoil/cpp-ethereum [Gitter]: https://gitter.im/ethereum-mining/ethminer [Hunter]: https://docs.hunter.sh/ [Releases]: https://github.com/ethereum-mining/ethminer/releases [Travis CI]: https://travis-ci.org/ethereum-mining/ethminer

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值